服务器: 客户端
socket() socket()
bind() connect()
listen()
accept()
开始阻塞直到 write()
客户端链接到来 写,发送信息
read() read()
write() close()
read()
close()
socket函数:为了执行网络i/o,一个进程做的第一件事就是调用socket函数,得到文件描述符;
connect()函数:tcp客户用此函数来建立与tcp服务器的链接;
bind函数:把一个本地协议地址赋予一个套接字,绑定端口;
Listen()函数:仅由TCP服务器调用,监听,调用connect发起链接的客户套接字;
Accept()函数:由TCP服务器调用,用于从已完成的链接队头,返回下一个已经完成的链接;
网络编程è 套接字:是一组用于编写网络程序的API
套接字类型:
Stream socket :面向流的一种套接字
包括:telnet http tcp..
Datagram socket:面向数据包的一种套接字
包括:udp tftp bootp..
Raw socket :原始套接字,具有最小的封装,最大的灵活;
如果开发自己的协议和发送包,需要用到Raw socket
数据封装:
是指原始数据被层层封装在不同层次的数据包中,最终进入到物理层传输,到达目标机器后,再被层层解析出来,还原为原始数据;
Socket为程序员完成所有的底层数据封装,程序员只要将发送的数据提交给socket API函数,API函数完成其他所有的工作,一方面带来了便利,保证正确,一方面阻止了个性与自定义的灵活;