基于SOCKET实现即时通讯聊天_第1页
基于SOCKET实现即时通讯聊天_第2页
基于SOCKET实现即时通讯聊天_第3页
基于SOCKET实现即时通讯聊天_第4页
基于SOCKET实现即时通讯聊天_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 Description TCP 协议传输测试 客户端 Usage sender p int r IP n x b x t x p int 服务器监听端口 r IP 服务器 IP n x 发送包的次数 b x 发送包的大小 t x 发送间隔 c1 2015 12 26 include include include pragma comment lib wsock32 lib define DEFAULT PORT 8888 默认端口号 define DEFAULT COUNT 25 默认发送次数 define DEFAULT CHAR a 默认填充字符 define DEFAULT BUFFER LENGTH 8192 默认包大小是 8K define DEFAULT INTERVAL 1000 默认间隔时间是 1 秒 define DEFAULT PER COUNT 1 默认每一次发送的包个个数 BOOL bConnect FALSE 先连接服务器标志 int iPort DEFAULT PORT int itime DEFAULT INTERVAL char cChar DEFAULT CHAR int dwCount DEFAULT COUNT int dwLength DEFAULT BUFFER LENGTH int dwPcount DEFAULT PER COUNT char szRecipient 128 服务器地址 Function usage Description 打印帮助信息并退出 void tip char name 2 printf usage s p int r IP n x b x d c m x n n name printf p int 服务器监听端口 缺省为 d n DEFAULT PORT printf r IP 服务器 IP n printf n x 发送数据次数 缺省为 d 次 n DEFAULT COUNT printf b x 发送包的大小 缺省为 d 字节 n DEFAULT BUFFER LENGTH printf t x 发送间隔时间 缺省为 d 秒 n DEFAULT INTERVAL printf m x 每次发送包的个数 缺省值为 d 个 n DEFAULT PER COUNT ExitProcess 1 Function ValidateArgs Description 命令行解析 void ValidateArgs int argc char argv int i if argc 2 tip argv 0 for i 1 i argc i if strlen argv i 3 iPort atoi break case r if strlen argv i 3 strcpy szRecipient break case n if strlen argv i 3 3 dwCount atol break case b if strlen argv i 3 dwLength atol break case t if strlen argv i 3 itime atol break case m if strlen argv i 3 dwPcount atol break default tip argv 0 break int main int argc char argv WSADATA wsd SOCKET s char sendbuf NULL int ret int i j SOCKADDR IN serverIP ValidateArgs argc argv if WSAStartup MAKEWORD 2 2 return 1 TCP 客户端启动 s socket AF INET SOCK STREAM 0 if s INVALID SOCKET 4 printf socket failed d n WSAGetLastError return 1 服务器地址设置 serverIP sin family AF INET serverIP sin port htons short iPort serverIP sin addr s addr inet addr szRecipient if serverIP sin addr s addr INADDR NONE struct hostent host NULL host gethostbyname szRecipient if host CopyMemory else printf gethostbyname failed d n WSAGetLastError WSACleanup return 1 printf 服务器监听端口 d t 发送包的次数 d n iPort dwCount printf 发送包的大小 d t 包的时间间隔 d n dwLength itime printf 每次发送包的个数 d n dwPcount 设置发送缓冲区 sendbuf char GlobalAlloc GMEM FIXED dwLength if sendbuf printf GlobalAlloc failed d n GetLastError return 1 sendbuf dwLength 1 0 memset sendbuf cChar dwLength 1 连接服务器 依照指定次数和发送间隔发送数据包 for i 0 i dwCount i dwPcount i for j 0 j dwPcount j 5 s socket AF INET SOCK STREAM 0 if connect s SOCKADDR closesocket s WSACleanup return 1 ret send s sendbuf dwLength 0 if ret SOCKET ERROR printf send failed d n WSAGetLastError break else if ret 0 break closesocket s Sleep itime closesocket s GlobalFree sendbuf WSACleanup return 0 c1 2015 12 26 include include include pragma comment lib wsock32 lib define DEFAULT PORT 8888 define DEFAULT LISTEN QUEUE 1000 6 define MAX BUF LENGTH 10240 int main void WSADATA wsd SOCKET servListen servAccept char recvBuf NULL int ret int dwTcpClientSize SOCKADDR IN tcpClienter local 初始化 socket 环境 if WSAStartup MAKEWORD 2 2 return 1 TCP 服务器启动设置 servListen socket AF INET SOCK STREAM 0 if servListen INVALID SOCKET printf socket failed d n WSAGetLastError return 1 memset local sin family AF INET local sin addr s addr htonl INADDR ANY local sin port htons DEFAULT PORT 绑定本地地址 if bind servListen SOCKADDR return 1 设置监听队列长度 if listen servListen DEFAULT LISTEN QUEUE 1 printf listen failed d n WSAGetLastError return 1 7 设置接收缓冲区 recvBuf char GlobalAlloc GMEM FIXED MAX BUF LENGTH if recvBuf printf GlobalAlloc failed d n GetLastError return 1 memset recvBuf 0 sizeof MAX BUF LENGTH printf 等待连接 n dwTcpClientSize sizeof tcpClienter while 1 servAccept accept servListen struct sockaddr if servAccept INVALID SOCKET printf accept failed d n WSAGetLastError break ret recv servAccept recvBuf sizeof recvBuf 0 if ret 0 printf recv failed d n WSAGetLastError break ret r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论