1.socket编程(套接字)
1.抓包 libPcap
2.应用编程接口 api:系统调用接口
3.技术 unix socket winsock tli
4.服务器进程之间可以通信,那客户与服务器哪个socket通信?
需要ip地址和对应主机的传输层协议的端口号,可以明确指定
那个通信
5.操作系统管理socket是用套接字描述符
2.地址结构 sockaddr_in
struct sockaddr_in{
u_char sin_len,长度,地址族,端口号,ip地址,没有使用
}
3.函数
wsastartup();//开始
socket(protofamily,type,proto)//创建套接字
protofamily协议名
type套接字类型 sock_strem(对应tcp) sock_DGRAM(对应UDP)
sock_raw(对应直接面向网络层,需要系统权限)
proto:哪种协议0是默认协议号
closesocket(socket sd)//关闭连接,如果有多个进程使用,引用次数-1
bind(sd,loacaladdr,addrlen)//绑定地址信息
描述符;本地地址;地址长度
服务器该绑定哪个用户的?, 用地址通配符 INADDR_ANY
哪个网络服务ip都可以
listen(sd,queuesize);//只用于服务器,缓存队列的大小
//成功1,失败0
connect(sd,saddr,saddrlen);//仅用于客户端
//可用tcp客户端,也可以用udp客户端
//使用udp,只是指定服务器端点地址
accept(sd,caddr,caddrlen);//仅用于tcp和服务器,是个阻塞的请求,等
//会创建新建的套接字,开另外一个tcp,就可以为多个客户服务了
send(sd,*buf,len,flags);//客户端和服务器都可以,已连接
sendto//没有连接的,upd,tcp
recv //接收数据
recvform//没有连接接收数据,客户端
setsockopt//设置socket的参数
getsockopt
WSACleanup();//关闭连接
3.网络字节顺序
4.没有设置那端口号为80