你是一名编程老师,我需要马上学会Socket 编程的核心使用方法,请你分别使用C语言教我客户端和服务端socket 的用法
时间: 2024-02-20 20:59:48 浏览: 25
好的,我可以为你提供一些C语言客户端和服务端Socket编程的核心使用方法。
首先是客户端Socket编程:
1. 创建Socket对象:使用socket()函数创建Socket对象,同时指定协议类型和通信协议。
```c
#include <sys/types.h>
#include <sys/socket.h>
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
```
2. 建立连接:使用connect()函数连接服务端Socket。
```c
#include <netinet/in.h>
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
```
3. 发送数据:使用send()函数向服务端发送数据。
```c
char buf[MAXLINE];
strcpy(buf, "Hello, server!");
send(sockfd, buf, strlen(buf), 0);
```
4. 接收数据:使用recv()函数从服务端接收数据。
```c
char buf[MAXLINE];
recv(sockfd, buf, MAXLINE, 0);
printf("%s\n", buf);
```
5. 关闭连接:使用close()函数关闭Socket连接。
```c
close(sockfd);
```
接下来是服务端Socket编程:
1. 创建Socket对象:使用socket()函数创建Socket对象,同时指定协议类型和通信协议。
```c
#include <sys/types.h>
#include <sys/socket.h>
int listenfd = socket(AF_INET, SOCK_STREAM, 0);
```
2. 绑定端口:使用bind()函数将Socket对象与指定端口绑定。
```c
#include <netinet/in.h>
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(listenfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
```
3. 监听连接:使用listen()函数监听客户端连接请求。
```c
listen(listenfd, LISTENQ);
```
4. 接受连接:使用accept()函数接受客户端连接请求,并返回新的Socket对象。
```c
#include <netinet/in.h>
struct sockaddr_in cli_addr;
socklen_t clilen = sizeof(cli_addr);
int connfd = accept(listenfd, (struct sockaddr *)&cli_addr, &clilen);
```
5. 接收数据:使用recv()函数从客户端接收数据。
```c
char buf[MAXLINE];
recv(connfd, buf, MAXLINE, 0);
printf("%s\n", buf);
```
6. 发送数据:使用send()函数向客户端发送数据。
```c
char buf[MAXLINE];
strcpy(buf, "Hello, client!");
send(connfd, buf, strlen(buf), 0);
```
7. 关闭连接:使用close()函数关闭Socket连接。
```c
close(connfd);
close(listenfd);
```
这些代码可以帮助你使用C语言进行Socket编程,但是Socket编程还有很多高级用法和应用场景,需要你深入学习和实践。