BSD Sockets 使用的最广泛的网络程序编程方法,主要用于应用程序的编写,用于网络上主机与主机之间的相互通信.
UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本上是来自BSD Sockets
Socket分为Stream Sockets和Data Sockets.
Stream Sockets是可靠性的双向数据传输用TCP,如HTTP,FTP等
Data Sockets是不可靠连接用UDP,如多点广播,DHCP,SNMP,RIP等.
创建一个Socket sFd =socket (AF_INET, SOCK_STREAM, 0) |
把Socket和本机的IP,TCP口绑定 bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) |
为客户连接创建等待队列 listen (sFd, SERVER_MAX_CONNECTIONS) |
这里循环等待,如有客户连接请求,则接受客户机连接要求 accept (sFd, (struct sockaddr *) &clientAddr, &sockAddrSize)) |
接受客户机发来的信息 fioRead (sFd, (char *) &clientRequest, sizeof (clientRequest))) |
给客户机发信息 write (sFd, replyMsg, sizeof (replyMsg)) |
关闭Socket,通信终止 close (sFd) |
|
两个浅蓝色的函数是两个Sockets的握手函数,即在这里建立连接 |
创建一个Socket sFd =socket (AF_INET, SOCK_STREAM, 0) |
注意:客户端不需要绑定,因为TCP口是动态的. |
向服务器端发送连接请求,并在这里等待回应,如收到回应则向下执行 connect (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) |
服务器接受连接请求后,读服务器发过来的信息 read(sFd,buffer,20) |
向服务器发信息 write(sFd, buffer, 20); |
关闭Sockets close (sFd) |
|
创建一个Socket sFd =socket (AF_INET, SOCK_DGRAM, 0) |
把Socket和本机的IP,TCP口绑定 bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) |
不需要创建等待 |
|