1 import socket 2 3 client = socket.socket() 4 client.connect(('localhost',3001)) 5 6 client.send(b'hhhh') 7 data = client.recv(1024) 8 print('recv:',data) 9 10 client.close()
1 客户端结果 2 >>> recv: b'HHHH'
1 import socket 2 3 server = socket.socket() 4 5 server.bind(('localhost',3001)) #绑定要监听端口 6 server.listen() #监听 7 8 print('开始等待数据....') 9 10 #conn表示客户端链接到服务端生成的一个链接实例 11 conn,addr = server.accept() #等待数据 12 13 print(conn,addr) 14 15 16 print('数据来了') 17 data = conn.recv(1024) 18 print('recv:',data) 19 20 conn.send(data.upper()) 21 22 server.close()
1 服务端结果 2 >>> 开始等待数据.... 3 >>> <socket.socket fd=296, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 3001), raddr=('127.0.0.1', 54373)> ('127.0.0.1', 54373) 4 >>> 数据来了 5 >>> recv: b'hhhh'
1 import socket 2 import os 3 4 client = socket.socket() 5 client.connect(('localhost', 3001)) 6 while True: 7 #让用户本身输入要发送的信息msg,由于涉及到中文,所已用encode和decode进行转换 8 msg = input(">>>:").strip() 9 if len(msg) == 0: 10 continue 11 client.send(msg.encode("utf-8")) 12 data = client.recv(1024) 13 print('recv:', data.decode()) 14 15 client.close()
1 import socket 2 import os 3 4 server = socket.socket() # 建立套接字 5 server.bind(('localhost', 3001)) # 绑定要监听端口 6 server.listen(1) # 监听,数据表明容许多少个连接 7 8 print('开始等待数据....') 9 # conn表示客户端链接到服务端生成的一个链接实例 10 # 先说第二个while,循环接收客户端数据,当客户端数据没有发送,服务端收到数据为空的时候跳出循环,这么作是由于这个程序若是想要一直接收客户端数据,就须要进行循环操做,可是若是收到数据为空,该循环就会进入一个死循环,因此须要断定条件,当客户端结束发送数据,而后结束链接; 11 # 而后第一个while,由于这里考虑测试多人单线程链接server,若是不加while,当客户端数据没有发送,server会直接断开链接,不接收下个新用户的请求数据,因此将一个链接实例放在循环里,当一个用户断开链接,回到上层,而后再接收新用户的数据。 12 while True: 13 conn, addr = server.accept() # 等待数据 14 print(conn, addr) 15 print('数据来了') 16 while True: 17 data = conn.recv(1024) 18 print('recv:', data) 19 if not data: 20 print('The client did not respond') 21 break 22 conn.send(data.upper()) 23 24 server.close()
import socket import os client = socket.socket() client.connect(('localhost', 3001)) while True: #让用户本身输入要发送的信息msg,由于涉及到中文,所已用encode和decode进行转换 msg = input(">>>:").strip() if len(msg) == 0: continue client.send(msg.encode("utf-8")) data = client.recv(1024) #print('recv:', data.decode()) print(data.decode()) client.close()
import socket import os server = socket.socket() # 建立套接字 server.bind(('localhost', 3001)) # 绑定要监听端口 server.listen(1) # 监听,数据表明容许多少个连接 print('开始等待数据....') while True: conn, addr = server.accept() # 等待数据 print(conn, addr) print('数据来了') while True: data = conn.recv(1024) print('recv:', data) if not data: print('The client did not respond') break res = os.popen(data.decode()).read() #py3 里socket发送的只有bytes,os.popen又只能接受str,因此要decode一下 conn.send(res.encode("utf-8")) server.close()