一、socket基础
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
服务器和客户端通信使用socket进行打开,读写,关闭操作
服务器和客户端通信示例
1 #服务器端 2 import socket 3 4 ip_port = ('127.0.0.1',9999) #生成句柄 5 6 sk = socket.socket() #默认tcp 7 sk.bind(ip_port) #绑定ip端口 8 sk.listen(5) #监听,最大5个 9 10 while True: 11 print ('server waiting...') 12 conn,addr = sk.accept() #conn为客户端生成的实例,addr获取的ip 13 14 client_data = conn.recv(1024) #接收数据1024个字符 15 print (str(client_data,'utf8')) 16 conn.sendall(bytes('不要回答,不要回答,不要回答','utf8')) #向客户端发送消息 17 conn.close()
1 #客户端 2 import socket 3 ip_port = ('127.0.0.1',9999) 4 5 sk = socket.socket() 6 sk.connect(ip_port) 7 8 sk.sendall(bytes('请求占领地球','utf8')) #向服务器端发送信息 9 10 server_reply = sk.recv(1024) #接收服务器端信息 11 print (str(server_reply,'utf8')) #打印接收到的信息 12 13 sk.close()
服务器和客户端的连续交互通信
1 #服务器端 2 import socket 3 4 ip_port = ('127.0.0.1',9999) 5 sk = socket.socket() 6 sk.bind(ip_port) 7 sk.listen(5) 8 9 while True: 10 print ('server waiting...') 11 conn,addr = sk.accept() 12 client_data = conn.recv(1024) 13 print (str(client_data,'utf8')) 14 conn.sendall(bytes('不要回答,不要回答,不要回答','utf8')) 15 while True: 16 client_data = conn.recv(1024) 17 print(str(client_data, 'utf8')) 18 server_response = input("