windows c语言 TCP Socket
时间: 2023-12-03 16:09:59 浏览: 87
要在Windows平台上使用C语言编写TCP Socket程序,可以遵循以下步骤:
1. 引入Windows Socket库文件
在程序中引入Windows Socket库文件,可以使用以下代码:
```
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
```
2. 初始化Winsock库
在程序开始运行之前,需要调用WSAStartup()函数来初始化Winsock库,可以使用以下代码:
```
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
printf("WSAStartup failed: %d\n", GetLastError());
return 1;
}
```
3. 创建Socket
使用socket()函数创建一个套接字,可以使用以下代码:
```
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
printf("socket failed: %d\n", WSAGetLastError());
WSACleanup();
return 1;
}
```
其中,AF_INET表示使用IPv4地址族,SOCK_STREAM表示使用TCP协议,IPPROTO_TCP表示使用TCP协议。
4. 连接服务器
使用connect()函数连接服务器,可以使用以下代码:
```
struct sockaddr_in serverAddr;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(port);
serverAddr.sin_addr.s_addr = inet_addr(ip);
if (connect(sock, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
printf("connect failed: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}
```
其中,port和ip分别表示服务器的端口号和IP地址。
5. 发送数据
使用send()函数发送数据,可以使用以下代码:
```
const char* sendData = "Hello, server!";
int ret = send(sock, sendData, strlen(sendData), 0);
if (ret == SOCKET_ERROR) {
printf("send failed: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}
```
6. 接收数据
使用recv()函数接收数据,可以使用以下代码:
```
char recvData[1024];
int ret = recv(sock, recvData, sizeof(recvData), 0);
if (ret == SOCKET_ERROR) {
printf("recv failed: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}
recvData[ret] = '\0';
printf("Received data: %s\n", recvData);
```
7. 关闭Socket
在程序结束时,使用closesocket()函数关闭Socket,可以使用以下代码:
```
closesocket(sock);
WSACleanup();
```
这些是使用C语言在Windows平台上编写TCP Socket程序的基本步骤,可以根据需要进行修改和扩展。
阅读全文