C语言写socket通信
时间: 2024-11-13 19:23:24 浏览: 19
在C语言中,使用socket通信通常涉及到以下几个步骤:
1. **创建套接字**:使用`socket()`函数创建一个新的套接字描述符。第一个参数是协议族(如AF_INET代表IPv4),第二个参数是类型(SOCK_STREAM用于TCP,SOCK_DGRAM用于UDP),第三个参数是标志,一般设为0。
2. **设置服务器地址**:对于服务器,需要使用`bind()`函数绑定套接字到特定的IP地址和端口号,通常是`INADDR_ANY`和0(系统会自动分配一个可用的端口)。
3. **监听连接**:服务器使用`listen()`函数开始监听新的客户端连接请求。可以指定最大连接数。
4. **接受客户端连接**:客户端连接到来时,服务器使用`accept()`函数接受连接请求,返回一个新的套接字描述符表示新的连接。
5. **发送和接收数据**:使用`send()`和`recv()`函数来发送和接收数据。注意,TCP连接是全双工的,意味着双方都可以同时发送和接收。
6. **关闭套接字**:在完成通信后,记得使用`close()`函数关闭套接字。
下面是一个简单的服务器和客户端示例代码片段:
```c
// 客户端示例
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main() {
int client_sock = socket(AF_INET, SOCK_STREAM, 0);
// ...继续设置客户端连接...
}
// 服务器示例
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
void server(int listen_sock) {
struct sockaddr_in serv_addr;
// ...设置服务器地址...
accept(listen_sock, (struct sockaddr *)&serv_addr, NULL); // 接受连接
// ...处理连接,发送和接收数据...
}
int main() {
int listen_sock = socket(AF_INET, SOCK_STREAM, 0);
// ...设置服务器地址和监听...
server(listen_sock);
close(listen_sock);
}
```
阅读全文