建立UDP通信
来源:互联网 发布:淘宝如何取消延长收货 编辑:程序博客网 时间:2024/06/07 04:13
昨天晚上一时心起开始了假期这段时间学习的总结,没有很系统的组织,只是想到一些有意义的,基础性的东西想拿出来复习一下,这段时间每天都在写代码,提醒自己要注意每天的总结,却还是落下了不少....慢慢来吧,幸好快开学了,时间相对多一些了。
好了开始今天的总结:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
首先从代码开始:
Server端:
- //初始化Socket版本Winsock2.2
- WSADATA wsaData;
- WORD wVersion = MAKEWORD(2,2);
- int err = WSAStartup(wVersion,&wsaData);
- if(err != 0)
- return FALSE;
- //填充本地主机地址
- SOCKADDR_IN addrSer;
- memset(&addrSer,0,sizeof(addrSer));
- addrSer.sin_family = AF_INET;
- addrSer.sin_port = htons(m_nPort);
- addrSer.sin_addr.s_addr = inet_addr("10.1.17.212");
- //建立UDP套接字
- m_Listen =socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
- if (m_Listen == SOCKET_ERROR)
- return ;
- //绑定本地地址
- if (bind(m_Listen,(SOCKADDR*)&addrSer,sizeof(SOCKADDR)) != 0)
- return;
接下来建立循环等待用户发送信息:
- TCHAR szBuf[MAX_PATH] = {0};
- while(1)
- {
- int nRecv = recvfrom(sock,(char*)szChat,
- MAX_PATH*sizeof(TCHAR),
- 0,
- (SOCKADDR*)&m_addrClient,
- &len);
- //SetWindowText显示到社会分配或控件...
- }
Client:
- //..初始socket版本略
- SOCKADDR_IN addrSer,addrClient;
- //初始化Server地址
- memset(&addrSer,0,sizeof(addrSer));
- addrSer.sin_family = AF_INET;
- addrSer.sin_port = htons(m_sPort);
- addrSer.sin_addr.s_addr = inet_addr(addrArr);
- //建立UDP套接字
- SOCKET m_Client = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
- //由于UDP不需建立连接,只需知道对方地址就能通信(通信是不安全的),所以直接发送信息
- TCHAR szBuf[MAX_PATH] = {_T("Hello!")};
- while(1)
- {
- //发送信息关键字为sendto,接收为recvfrom
- sendto(m_Client,(char*)szBuf,
- MAX_PATH*sizeof(TCHAR),
- 0,(SOCKADDR*)&addrSer,
- sizeof(SOCKADDR));
- //显示内容到窗体...
- }
由于现在所写的程序都是阻塞的,所心建议在调试下一步一步地体会信息传送过程。事实上,调试程序教会了我很多书本上学不到的东西,有的过程得自己去摸索才能真正体会。
总结一下:TCP和UDP的主要区别:
1.建立套接字
socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //TCP
socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); //UDP
2.建立连接过程:
TCP建立连接过程服务端需要把本地地址bind以后监听listen,然后是accept等待用户连接(accept是阻塞的),客房端则需要bind服务端地址,然后connect请求建立连接,建立好后双方就可以通信。
而UDP建立连接过程则简单了许多,首先是服务端,仅需要与本地绑定,就可以等待接收信息。客户端则只需与服务端地址绑定,就可以向服务端发送信息。
通过通信过程的建立可以看出,TCP稳定安全适合性能要求较高的连接通信,而UDP相对来说就没有安全保障,对于事件处理比TCP少了许多,不过在局域网内很多都是通过UDP来建立聊天功能的。它只管发向对方,而不在乎传送成功与否。而TCP则能保证信息发送到位,因此常用于文件传输。
好了今天就写到这里,明天我想把常用的几种IO模型总结一下,一共五种,一次可能总结不完,慢慢来吧...
- 建立UDP通信
- tcp/udp建立连接并通信的过程
- 图解TCP UDP建立网络通信的模型,
- UDP通信
- UDP通信
- UDP通信
- UDP-通信
- UDP通信
- UDP 通信
- UDP通信
- UDP通信
- UDP通信
- UDP通信
- UDP通信
- UDP通信
- UDP通信
- UDP 通信
- UDP通信
- Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps
- 关于显式接口实现
- UML for Java Programmers
- Linux下的aMule设置
- Eclipse distilled
- 建立UDP通信
- Eclipse AspectJ : Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools
- J2ME: the complete reference
- Core J2ME Technology
- Wireless J2ME Platform Programming
- Sharepoint User's Guide
- Eclipse Cookbook
- 当前阶段政府最应该考虑的政策
- 日本发生两起iPod Nano爆炸事件