最最基本的socket编程基础(c++) 二

这一篇我来写一下socket编程里面比较基本的函数

SOCKET socket(int af,int type,int protocl);

第二个参数指定socket类型 SOCKE_STREAM产生流式套接字,SOCK_DGRAM产生数据报套接字
函数调用失败返回INVALID_SOCKET

我有一个疑问就是如果客户端和服务端的socket类型不同还可不可以进行通讯,这个我过段时间试验一下,先马克
 

bind(SOCKET s,const struct sockaddr *name,int namelen);

第一个参数当然是待绑定的套接字啦,
第二个参数是标识绑定在哪个“地方”(sockaddr_in),服务端那个里面ip是全0,我觉着可能是指能接受那些ip发送的数据?
第三个参数是这个“地方”的占地大小。
这个客户端一般是不用绑定的,使用的时候直接分配端口就好,但是服务端是需要绑定的,要不是不知道究竟访问那个端口服务端才能收到

int WSAAPI listen(SOCKET s,int backlog);

设置socket的状态为监听,使客户端程序可以进行连接
参数 backlog指定最大的连接数

SOCKET WSAAPI accept(SOCKET s,struct sockaddr *addr,int *addrlen);

参数一是正在监听的socket,参数二在执行之后会包含客户端的端口ip等(sockaddr_in)
返回值是一个新的套接字描述符,他代表的是和客户端新的连接
在没有连接之前进程处于阻塞状态

int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
int WSAAPI send(SOCKET s,const char *buf,int len,int flags);

这两个socket是建立连接后生成的那个socket,注意第二个参数是char数组而不是string

int WSAAPI connect(SOCKET s,const struct sockaddr *name,int namelen);

参数一是socket函数建立的套接字
参数二包含了所要连接的服务端的地址和端口

你可能感兴趣的:(socket基础)