Socket编程简介

Socket编程简介

ID:41032633

大小:21.29 KB

页数:12页

时间:2019-08-14

Socket编程简介_第1页
Socket编程简介_第2页
Socket编程简介_第3页
Socket编程简介_第4页
Socket编程简介_第5页
资源描述:

《Socket编程简介》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、孙鑫第十四课Socket编程之一简介2011-04-2710:291 Socket编程分为基于TCP的和基于UDP的TCP:面向连接的,可靠的传输,连接要经过三次握手,客户端在连接之前就得按照已知的服务器地址端口进行连接,服务器端在等到客户端的连接后返回一个连接套接字,之后的信息发送接收就按这条连接进行,不需要再有地址信息。UDP:面向无连接的,不可靠的,不会进行重发,由于没有连接,因此每次发送都要指明对方的IP端口,每次接收都要信息的同时要接收对方地址端口。 在socket编程中,套接字有三种,流式套接字(SOCK_STREAM),数据报套接字(S

2、OCK_DGRAM),原始套接字(SOCK_RAW),基于TCP的采用的是流式套接字,基于UDP的采用的是数据报套接字,socket2.0版本不支持原是套接字。 2 基于TCP的套接字编程★ 基于TCP的服务器端套接字编程步骤①协商版本/初始化(WSAStartup)②建立服务器套接字(socket)③套接字绑定本机IP和端口(bind)④设置为监听模式(listen)⑤开始监听连接,如果有连接到来则返回一个连接套接字(同时取得客户端地址端口),否则一直在此监听。(accept)⑥使用连接套接字开始和客户端通信(发送/接收)。(send/recv)⑦

3、通信完毕,关闭套接字(连接套接字/ 服务器套接字)。(closesoket)⑧释放资源,删除套接字库的使用。(WSACleanup) ★ 基于TCP的客户端套接字编程步骤①协商版本/初始化(WSAStartup)②建立客户端套接字(socket)③指定服务器地址/端口。(SOCKADDR_INaddrServer)④连接服务器(connect)⑤开始通信(发送/接收)。(send/recv)⑥通信完毕,关闭套接字。(closesoket)⑦释放资源,删除套接字库的使用。(WSACleanup) NOTE基于TCP的socket编程中服务器端和客户端的

4、区别:①客户端不用绑定本地IP和端口。②由于服务器是被动的等待连接,因此必须先由客户端发起连接请求(这样服务器才能知道客户端的地址端口),而客户端在连接服务器之前就应该已经知道了服务器地址。 3基于UDP的套接字编程★ 基于UPD的服务器端套接字编程步骤①协商版本/初始化(WSAStartup)②建立套接字(socket)③绑定本地IP端口(bind)④通信,发送/接收(sendto/recvfrom)⑤通信完毕,关闭套接字(closesocket)⑥释放资源,删除使用套接字库(WSACleanup) ★ 基于UDP的客户端套接字变成步骤①协商版本/

5、初始化(WSAStartup)②建立套接字(socket)③通信,发送/接收(sendto/recvfrom)④通信完毕,关闭套接字(closesoket)⑤释放资源,删除使用套接字库(WSACleanup) NOTE:基于UDP的客户端编程中客户端不必发起连接请求,为了能达到服务器,需要在sendto函数中指定地址端口。 服务器段也需要在sendto函数中指定客户端的地址端口。而在基于TCP的服务器中,在返回连接套接字后,已经和对方建立了连接,也就是说早accept函数中取得了客户端的地址。基于TCP的客户端中,在发起连接请求的时候要指定服务器的地

6、址和端口,因此连接建立以后的send/recv都不再需要地址端口。   4TCP实例下面是孙鑫老师视频中讲的一个基于TCP的socket编程例子(稍有改动),提供了socektTCP编程的基本思路。////////////////////////////////////////////服务器端////////////////////////////////////////////////////////#include //必须的头文件#include#include"stdio.h"#pragmacomm

7、ent(lib,"ws2_32.lib") //指定连接的库文件,取代在VC工程设置里添加usingnamespacestd; intmain(){   WORDwVersionRequested;//版本号    WSADATAwsaData;    interr;   wVersionRequested=MAKEWORD(1,1);//1.1版本的套接字,协商版本初始化   err=WSAStartup(wVersionRequested,&wsaData);    if(err!=0) //加载套接字库,加裁失败则返回   {       ce

8、rr<<"startuperror!"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。