TCP&IP网络编程(尹圣雨)UDP 轮流收发消息(windows)

打印 上一主题 下一主题

主题 1443|帖子 1443|积分 4329

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
端口号写的是 2345
客户端

  1. #include <iostream>
  2. #include <winsock2.h>
  3. #pragma comment(lib, "ws2_32.lib")
  4. using std::cout;
  5. using std::endl;
  6. using std::cin;
  7. int main()
  8. {
  9.     WSADATA wsa;
  10.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  11.     {
  12.         cout << "startup error" << endl;
  13.     }
  14.     sockaddr_in sd;
  15.     sd.sin_port = htons(2345);
  16.     sd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  17.     sd.sin_family = AF_INET;
  18.     SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);
  19.     // connect(sock, (sockaddr *)&sd, sizeof(sd));
  20.     for (int i = 0; i < 10; ++i)
  21.     {
  22.         char buf[1024];
  23.         cout << "请输入文本:" << endl;
  24.         cin >> buf;
  25.         int len = sizeof(sd);
  26.         sendto(sock, buf, strlen(buf), 0, (sockaddr *)&sd, sizeof(sd));
  27.         len = sizeof(sd);
  28.         memset(&buf, 0, 1024);
  29.         recvfrom(sock, buf, 1024, 0,(sockaddr *)&sd, &len);
  30.         cout << "收到的数据:" << buf<<endl;
  31.     }
  32.     getchar();
  33.     closesocket(sock);
  34.     WSACleanup();
  35.     return 0;
  36. }
复制代码
服务端

  1. #include <iostream>
  2. #include <WinSock2.h>
  3. #pragma comment(lib, "ws2_32.lib")
  4. using std::cout;
  5. using std::endl;
  6. using std::cin;
  7. int main()
  8. {
  9.     WSADATA wsa;
  10.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  11.     {
  12.         cout << "WSA Error" << endl;
  13.         return 0;
  14.     }
  15.     sockaddr_in sd;
  16.     sd.sin_family = AF_INET;
  17.     sd.sin_port = htons(2345);
  18.     sd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  19.     SOCKET sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
  20.     if (sock == INVALID_SOCKET)
  21.     {
  22.         cout << "socket error" << endl;
  23.         return 0;
  24.     }
  25.     if (bind(sock, (sockaddr *)&sd, sizeof(sd)) == SOCKET_ERROR)
  26.     {
  27.         cout << "bind error" << endl;
  28.         return 0;
  29.     }
  30.     sockaddr_in clientSd;
  31.     for (int i = 0; i < 10; ++i)
  32.     {
  33.         char buf[1024] = "";
  34.         int len = sizeof(clientSd);
  35.          recvfrom(sock, buf, 1024, 0, (sockaddr *)&clientSd, &len);
  36.         cout << buf<<endl;
  37.         memset(&buf, 0, 1024);
  38.         cout << "请输入数据:" << endl;
  39.         cin >> buf;
  40.         sendto(
  41.             sock, buf, strlen(buf), 0, (sockaddr *)(&clientSd),
  42.         sizeof(clientSd));
  43.     }
  44.     closesocket(sock);
  45.     WSACleanup();
  46.     return 0;
  47. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表