Windows Socket+UDPserverclient


     Winsock是 Windows下套接字标准
         
         1.UDP socket编程:


         UDP(用户数据报协议)是一个无连接。不可靠的传输数据,其特点是简单,快捷。相比与TCP,UDP不须要建立连接(不需connect、accept函数),数据发送接收之后,不须要终止连接。基于UDP的程序,避免了TCP执行的开销,在效率与速度上具有更好的表现。
         UDP是无连接的,可能会有数据的丢失,延迟。这些须要应用程序自己处理。

         
         2.UDP基本函数:
          

创建socket:
         SOCKET  socket (int af, int type, int protocol);
         第一个參数af:  表示族地址。网络编程一般使用AF_INET宏。
         第二个參数type:  表示连接类型,TCP可选面向连接SOCK_STREAM。UDP数据报SOCK_DGRAM。
         第三个參数protocol:  表示协议,在使用AF_INET族地址UDP连接,设为IPPROTO_UDP。
绑定socket:

         int  bind(SOCKET s, const struct sockaddr *saddr,int namelen);
         第一个參数:  须要绑定的socket。
         第二个參数:  相应AF_INET,使用struct sockaddr_in包括协议。IP,port等信息。

         第三个參数:  相应AF_INET,使用struct sockaddr_in结构大小。
         该函数将socket与协议,IP地址。Portport号绑定起来。相对于给socket“命名”唯一的标识。这样其它的进程就能够通过这个标识找到这个socket。

发送数据:
         int  sendto(SOCKET s, const char
 *buf,  int len,
                              int flags, const struct sockaddr  *to, int tolen);
         第一个參数:  socket为对方的socket。
         第二个參数:  发送数据的缓冲区。
         第三个參数:  数据缓冲区大小。
         第四个參数:  紧急状态,一般这为0。

         第五个參数:  可选。相应AF_INET,对方IP。port等socket地址标识sockaddr_in。
         第六个參数:  可选,相应AF_INET,使用sockaddr_in结构大小。
         该函数用于UDP发送数据。
接收数据:
         int  recvfrom(SOCKET s, char
*buf, int len, 
                                  int flags, struct sockaddr *from, int *fromlen ); 
       

         第一个參数:  socket为对方的socket。

         第二个參数:  接收数据的缓冲区。
         第三个參数:  数据缓冲区大小。
         第四个參数:  紧急状态。一般这为0。
         第五个參数:  可选。相应AF_INET。返回对方IP。port等socket地址标识sockaddr_in。

         第六个參数:  可选,相应AF_INET,使用sockaddr_in结构大小。
         该函数用于UDP接收数据。

绑定socket:

         int  bind(SOCKET s, const struct sockaddr *saddr,int namelen);
         第一个參数:  须要绑定的socket。
         第二个參数:  相应AF_INET,使用struct sockaddr_in包括协议,IP,port等信息。

         第三个參数:  相应AF_INET。使用struct sockaddr_in结构大小。
         该函数将socket与协议,IP,port号绑定起来,相对于给socket“命名”唯一的标识。这样其它的进程就能够通过这个标识找到这个socket。

关闭套接字:

          int  closesocket(SOCKET s);
          參数为socket。
          该函数用于关闭套接字。

          3.牛刀小试:
          先在VC6.0执行server程序,再打开一个VC6.0执行client程序:
          UDPseverserver等待来自client的信息。收到信息后打印出来,然后向client发送如今的时间。
          UDPclient客户端向server发送一个“Hello,server!”信息,然后接收来自server的时间信息并打印,反复三次。

执行效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG92ZWNvZGVsZXNz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

UDPclient程序:
UDPserver程序:

【windows socket+UDPserverclient】的更多相关文章

  1. 【windows socket+TCPserverclient】

    Windows Socket+TCPserverclient      Winsock是 Windows下套接字标准.          Socket套接字基于计算机网络,提供同一系统上不同进程或由局 ...

  2. 【windows socket+HTTPserverclient】

    Windows Socket+HTTPserverclient      Winsock是 Windows下套接字标准.                 1.HTTP协议:          HTTP ...

  3. 【Windows socket+IP+UDP+TCP】网络基础

    Windows Socket+网络      Winsock是 Windows下套接字标准.          Winsock 编程分为UDP[Windows socket + UDP],TCP[Wi ...

  4. Microsoft SQL Server 【Windows 身份验证】和 【sa】都无法登录的解决方案

    1.修改启动参数:打开[SQL Server 配置管理器(SQL Server Configuration Manager)]→右键[SQL Server(MSSQLSERVER)]属性→高级(Adv ...

  5. 【windows核心编程】IO完成端口(IOCP)复制文件小例

    1.演示内容 文件复制 2.提要 复制大文件时,使用FILE_FLAG_NO_BUFFERING标志 同时需要注意: 读写文件的偏移地址为 磁盘扇区 的整数倍 读写文件的字节数为 磁盘扇区 的整数倍 ...

  6. 【windows核心编程】一个API拦截的例子

    API拦截 修改PE文件导入段中的导入函数地址 为 新的函数地址 这涉及PE文件格式中的导入表和IAT,PE文件中每个隐式链接的DLL对应一个IMAGE_IMPORT_DESCRIPTOR描述符结构, ...

  7. 【windows核心编程】DLL相关(3)

    DLL重定向 因为DLL的搜索路径有先后次序,假设有这样的场景:App1.exe使用MyDll1.0.dll, App2.exe使用MyDll2.0.dll, MyDll1.0 和 MyDll2.0是 ...

  8. 【windows核心编程】 第八章 用户模式下的线程同步

    Windows核心编程 第八章 用户模式下的线程同步 1. 线程之间通信发生在以下两种情况: ①    需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性 ②    一个线程需要通知其他线程 ...

  9. 【windows核心编程】 第六章 线程基础

    Windows核心编程 第六章 线程基础 欢迎转载 转载请注明出处:http://www.cnblogs.com/cuish/p/3145214.html 1. 线程的组成 ①    一个是线程的内核 ...

随机推荐

  1. 大数据学习——spark笔记

    变量的定义 val a: Int = 1 var b = 2 方法和函数 区别:函数可以作为参数传递给方法 方法: def test(arg: Int): Int=>Int ={ 方法体 } v ...

  2. python学习-- 理解'*','*args','**','**kwargs'

    刚开始学习Python的时候,对有关args,kwargs,和*的使用感到很困惑.相信对此感到疑惑的人也有很多.我打算通过这个帖子来排解这个疑惑(希望能减少疑惑). 让我们通过以下5步来理解: 1.  ...

  3. 命令行下修改postgres密码

    1. 修改PostgreSQL数据库默认用户postgres的密码 PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下: 步骤一:登录Pos ...

  4. Leetcode 423.从英文中重建数字

    从英文中重建数字 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9.按升序输出原始的数字. 注意: 输入只包含小写英文字母. 输入保证合法并可以转换为原始的数字,这意味着像 &quo ...

  5. LinearLayout 滚动条

    比如文件列表, 显示不下,需要出滚动条:外面加一个scrollview 直接上代码: <?xml version="1.0" encoding="utf-8&quo ...

  6. 【Luogu】P2515软件安装(树形DP)

    题目链接 这么水的题我一遍没A,而且前两次提交都只有十分.气死我了.本来我的博客拒收水题来着. Tarjan缩点之后跑树形DP即可. #include<cstdio> #include&l ...

  7. iOS-ASIHTTPRequest缓存机制

    第三方网络请求库 * 我们在对网络请求的时候,可以使用系统为我们提供的NSURLRequest和NSURLConnection,它基本能实现我们的基本功能. * 但是有时我们使用第三方封装的库,可以轻 ...

  8. 【bzoj1191】[HNOI2006]超级英雄Hero - 二分图匹配

    现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确回答一道题后,才能进入下一 ...

  9. 不吹不黑,关于 Java 类加载器的这一点,市面上没有任何一本图书讲到

    类加载器第7弹: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得,我可能发现了Jar 包冲突的秘密 重写类加载器,实现简单的热替 ...

  10. app_data中的数据库使用

    原文发布时间为:2008-07-24 -- 来源于本人的百度文章 [由搬家工具导入] ASP.NET中利用VWD操作数据库 建立本地数据库   你可以轻易地在Visual Studio的Web应用程序 ...