TCP方式
server端
server端的socket一般流程是这样:
- 建立一个socket(可以选择socket类型INET,UNIX等,以及连接方式TCP/UDP)
- 使用bind公开一个端口,使得client可以方便连接
- 设置一个listen队列的大小
- 进入一个无限循环,在此无限循环中,使用accept函数来等待客户连接,此函数返回一个新的socket, 对应于客户端的socket,建立通信信道。对socket的处理一般放在外部单独的函数中(并发)
- 通过send()/recv()来对socket进行读写操作
例子:
1 def tcpServer(): 2 srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM) 3 srvsock.bind(('', 9527)) 4 srvsock.listen(5) 5 6 while True: 7 clisock, (remoteHost, remotePort) = srvsock.accept() 8 print "[%s:%s] connected" % (remoteHost, remotePort) 9 #do something on the clisock 10 clisock.close() 11 12 13 if __name__ == "__main__": 14 tcpServer()
client端
- 建立一个新的socket
- 使用connect函数与远程主机获得连接
- 在此socket上进行I/O操作