挺无聊一小程序,俩SB一人说一句,据说聊天程序最好用UDP写。 Server:

[csharp] view plaincopy
  1. #pragma comment (lib,"ws2_32.lib")
  2. #include <Winsock2.h>
  3. #include <stdio.h>
  4. void main()
  5. {
  6. //版本协商
  7. WORD wVersionRequested;
  8. WSADATA wsaData;
  9. int err;
  10. wVersionRequested = MAKEWORD( 1, 1 );
  11. err = WSAStartup( wVersionRequested, &wsaData );
  12. if ( err != 0 ) {
  13. /* Tell the user that we could not find a usable */
  14. /* WinSock DLL.                                  */
  15. return;
  16. }
  17. /* Confirm that the WinSock DLL supports 2.2.*/
  18. /* Note that if the DLL supports versions greater    */
  19. /* than 2.2 in addition to 2.2, it will still return */
  20. /* 2.2 in wVersion since that is the version we      */
  21. /* requested.                                        */
  22. if ( LOBYTE( wsaData.wVersion ) != 1 ||
  23. HIBYTE( wsaData.wVersion ) != 1) {
  24. /* Tell the user that we could not find a usable */
  25. /* WinSock DLL.                                  */
  26. WSACleanup( );
  27. return;
  28. }
  29. /* The WinSock DLL is acceptable. Proceed. */
  30. //创建数据报套接字
  31. SOCKET svr = socket(AF_INET,SOCK_DGRAM,0);
  32. //创建本地地址信息
  33. SOCKADDR_IN addr;
  34. addr.sin_family = AF_INET;
  35. addr.sin_port = htons(6000);
  36. addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
  37. int len = sizeof(sockaddr);
  38. bind(svr,(sockaddr*)&addr,len);
  39. //创建客户端地址对象
  40. SOCKADDR_IN addrClient;
  41. char recvBuf[128];
  42. char sendBuf[128];
  43. char tempBuf[256];
  44. while(true)
  45. {
  46. //接收数据
  47. recvfrom(svr,recvBuf,128,0,(sockaddr*)&addrClient,&len);
  48. char* ipClient = inet_ntoa(addrClient.sin_addr);
  49. sprintf(tempBuf,"%s said: %s/n",ipClient,recvBuf);
  50. printf("%s",tempBuf);
  51. gets(sendBuf);
  52. //发送数据
  53. sendto(svr,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrClient,len);
  54. }
  55. closesocket(svr);
  56. WSACleanup();
  57. }

Client:

[csharp] view plaincopy
  1. #pragma comment (lib,"ws2_32.lib")
  2. #include <Winsock2.h>
  3. #include <stdio.h>
  4. void main()
  5. {
  6. //版本协商
  7. WORD wVersionRequested;
  8. WSADATA wsaData;
  9. int err;
  10. wVersionRequested = MAKEWORD( 1, 1 );
  11. err = WSAStartup( wVersionRequested, &wsaData );
  12. if ( err != 0 ) {
  13. /* Tell the user that we could not find a usable */
  14. /* WinSock DLL.                                  */
  15. return;
  16. }
  17. /* Confirm that the WinSock DLL supports 2.2.*/
  18. /* Note that if the DLL supports versions greater    */
  19. /* than 2.2 in addition to 2.2, it will still return */
  20. /* 2.2 in wVersion since that is the version we      */
  21. /* requested.                                        */
  22. if ( LOBYTE( wsaData.wVersion ) != 1 ||
  23. HIBYTE( wsaData.wVersion ) != 1 ) {
  24. /* Tell the user that we could not find a usable */
  25. /* WinSock DLL.                                  */
  26. WSACleanup( );
  27. return;
  28. }
  29. /* The WinSock DLL is acceptable. Proceed. */
  30. //创建服务器套接字
  31. SOCKET Svr = socket(AF_INET,SOCK_DGRAM,0);
  32. //创建地址
  33. SOCKADDR_IN addrSvr;
  34. addrSvr.sin_family = AF_INET;
  35. addrSvr.sin_port = htons(6000);
  36. addrSvr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  37. char recvBuf[128];
  38. char sendBuf[128];
  39. int len = sizeof(sockaddr);
  40. while(true)
  41. {
  42. gets(sendBuf);
  43. //发送数据
  44. sendto(Svr,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrSvr,len);
  45. //接收数据
  46. recvfrom(Svr,recvBuf,128,0,(sockaddr*)&addrSvr,&len);
  47. char* ipSvr = inet_ntoa(addrSvr.sin_addr);
  48. printf("%s said: %s/n",ipSvr,recvBuf);
  49. }
  50. closesocket(Svr);
  51. WSACleanup();
  52. }

UDP Socket编程 C/C++实现 (Windows Platform SDK)相关推荐

  1. linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家

    Linux UDP socket编程(UDP通讯模型): UDPClient + UDPService. Linux下大多数网络程序都是基于TCP的,很少基于UDP,简单的通讯模型如下,开发时候备用! ...

  2. 【techQA】安装Windows Platform SDK v7.1出现提示Some Windows SDK components require the RTM .NET Framework 4

    [techQ&A]安装Windows Platform SDK v7.1出现提示Some Windows SDK components require the RTM .NET Framewo ...

  3. Java TCP/UDP socket 编程流程总结

    最近正好学习了一点用java socket编程的东西.感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下. Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据.就 ...

  4. python(18):网络编程(七层协议+tcp/udp+socket编程)

    Python作为最热门的语言,使我们每个人应该学习的一门技术! 本文针对初学者,我会用最容易的方式告诉你如何入门python! 一.基本网络概念 1.计算机之间如何进行联机 早期: 以太网:局域网与交 ...

  5. 【Java】UDP Socket编程案例——文件传输聊天工具

    UDP(用户数据报协议)就像日常生活中的邮件投递,是不能保证可靠地寄到目的地.UDP是无连接的,对系统资源的要求较少,UDP可能丢包,也不保证数据顺序.但是对于网络游戏和在线视频等要求传输快,实时性高 ...

  6. tcp/udp socket编程异同

    一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 ...

  7. UDP socket编程中使用connect

    转自:http://hi.baidu.com/rwen2012/item/545a39ba741307d085dd7957 标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来 ...

  8. UDP socket 编程学习笔记

    UDP编程的基本流程 UDP是无连接.不可靠的数据报协议,不同于TCP的面向连接的可靠数据流.UDP编程常见的应用包括:DNS域名服务器.NFS网络文件系统.SNMP简单网络管理协议. 客户端不必与服 ...

  9. Linux下C语言实现UDP Socket编程

    该博文参考了Linux C socket 编程之UDP一文,在这里表示感谢! 发送方: /* * File: udp_sender.c* Author: Henry** Created on 2019 ...

最新文章

  1. 第七篇:循环神经网络
  2. 为何大多数人做出来的图表只是一坨屎?
  3. python xlsx 图片_实例11:用Python给Excel所有工作表添加图片
  4. CSS——京东首页实战总结
  5. C#数据结构-双链表
  6. java 建立一个graphics对象_java – 我应该显式处理Graphics对象吗?
  7. Atom飞行手册翻译: 2.4 编辑和删除文本
  8. LeetCode(733)——图像渲染(JavaScript)
  9. python的setdefault方法
  10. 高并发、高性能 Web 架构
  11. 微信 JSAPI 支付流程
  12. 档案管理制度计算机管理制度,档案管理制度保密制度
  13. 浅谈测试小白到测试大牛的成长历程(分四个境界)
  14. 电脑录像,笔记本电脑录像功能_笔记本电脑 录像
  15. 健康低辐射,信号全覆盖,飞鱼星i-Home覆盖方案上市
  16. 十一黄金周旅游线路排行榜(图文)
  17. 一种解决退出远程桌面后,电脑自动睡眠的方法
  18. Python学习摘录(自用)
  19. EasyUI上传图片,前台预览,后台读取
  20. hutool工具类生成二维码案例

热门文章

  1. python2048游戏代码_【Python】用Python实现2048小游戏(源代码,1.0版本)
  2. aop+注解 实现对实体类的字段校验_SpringBoot实现通用的接口参数校验
  3. 网络交换机功能和原理详解
  4. [渝粤教育] 西南科技大学 现代企业管理 在线考试复习资料
  5. 【渝粤题库】陕西师范大学202091公共管理学原理 作业(高起本、专升本)
  6. 【指南】远程抄表系统(AMR/AMI)中无线模块选型
  7. mysql 强制读主库_laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题...
  8. 2017计算机信息技术,2017年一级计算机信息技术及应用考试试题级答案[权威资料]...
  9. linux下部署mysql数据库连接_Linux远程部署MySQL数据库详细步骤
  10. Win10窗口侧边栏设置Win7模式