Visual C++网络编程(黑客)学习笔记六
上几节主要介绍了Windows Socket编程中服务器端操作Socket的编程,下面几节主要介绍客户端Socket的操作。客户端Socket编程主要涉及建立Socket连接和发送连接请求等。
客户端应用程序首先也是调用WSAStartup()函数的初始化Winsock的动态链接库,然后同样调用socket()来建立一个TCP或UDP Socket (相同协议的Sockets才能相通,TCP对TCP,
UDP对UDP)。与服务器端Socket不同的是,客户端的Socket可以调用bind()函数来指定IP或者PORT,但是也可以不调用而由Winsock来自动设定IP和PORT。
当客户端程序要连接服务器时,客户端程序的Socket调用connect()函数监听,与name所指定的特定端口上的服务器端Socket进行连接。调用成功返回0,失败返回
SOCKET_ERROR.
connect()函数的原型:
int connect(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
函数参数解释:
s:客户端流套接字。
name:要连接的套接字的地址结构。
namelen:指明套接字的地址结构的长度。
下面是connect函数示例:
//...
struct sockaddr_in name;
memset((void*)&name, 0, sizeof(name));
name.sin_family = FA_INET;
name.sin_port = htons(80);
name.sin_addr.s_addr = inet_addr("");
connect(sSocket, (struct sockaddr *)&name, sizeof(name));
//...
服务器端和客户端分别创建Socket并连接后,就开始数据的传送。网络编程数据传送涉及两大协议:TCP/IP和UDP。下节将介绍TCP Socket与UDP Socket在传送数据时的特性以及
Socket数据报的发送方式。
