利用Winsock控件编写TCP应用程序或者UDP应用程序。具体代码
时间: 2024-05-06 18:14:31 浏览: 40
Winsock控件是Windows提供的一种用于网络编程的API,通过该API可以实现TCP或UDP应用程序的开发。
下面是一个简单的TCP应用程序代码示例:
```
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int main() {
WSADATA wsa;
SOCKET s;
struct sockaddr_in server;
char message[100], server_reply[200];
// 初始化Winsock库
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("Failed. Error Code: %d", WSAGetLastError());
return 1;
}
// 创建套接字
if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
printf("Could not create socket: %d", WSAGetLastError());
}
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(8888);
// 连接到服务器
if (connect(s, (struct sockaddr *)&server, sizeof(server)) < 0) {
puts("Connect error");
return 1;
}
puts("Connected\n");
// 发送数据
printf("Enter message : ");
gets(message);
if (send(s, message, strlen(message), 0) < 0) {
puts("Send failed");
return 1;
}
// 接收服务器响应
if (recv(s, server_reply, 200, 0) < 0) {
puts("recv failed");
}
puts("Server reply :");
puts(server_reply);
closesocket(s);
WSACleanup();
return 0;
}
```
下面是一个简单的UDP应用程序代码示例:
```
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int main() {
WSADATA wsa;
SOCKET s;
struct sockaddr_in server;
char message[100], server_reply[200];
int server_reply_size, recv_len;
// 初始化Winsock库
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("Failed. Error Code: %d", WSAGetLastError());
return 1;
}
// 创建套接字
if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
printf("Could not create socket: %d", WSAGetLastError());
}
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(8888);
// 发送数据
printf("Enter message : ");
gets(message);
if (sendto(s, message, strlen(message), 0, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) {
printf("sendto failed with error code : %d", WSAGetLastError());
return 1;
}
puts("Data Sent\n");
// 接收服务器响应
server_reply_size = sizeof(server);
if ((recv_len = recvfrom(s, server_reply, 200, 0, (struct sockaddr *)&server, &server_reply_size)) == SOCKET_ERROR) {
printf("recvfrom failed with error code : %d", WSAGetLastError());
return 1;
}
puts("Reply received\n");
server_reply[recv_len] = '\0';
puts(server_reply);
closesocket(s);
WSACleanup();
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)