网络编程
TCP编程
创建服务端
import socket import threading import time def dealClient(sock,addr): #第四步:接受传来的数据,并发送给对方数据 print('Accept new connection from %s:%s...'%addr) sock.send(b'Hello,I am server!') while True: data=sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8')=='exit': break print ('-->>%s!' %data.decode('utf-8')) sock.send(('Loop_Msg: %s!' % data.decode('utf-8')).encode('utf-8')) #第五步:关闭Socket sock.close() print('Connection from %s:%s closed'%addr) if __name__=="__main__": #第一步 创建一个基于IPV4和TCP协议的socket #Socket绑定的IP(127.0.0.1为本机IP)与端口 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',9999)) #第二步 监听连接 s.listen(5) print('Waiting for connection...') while True: #第三步:接收一个新连接 sock,addr=s.accept() #创建新线程来处理TCP连接: t=threading.Thread(target=dealClient,args=(sock,addr)) t.start()
创建客户端
import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) print('-->'+s.recv(1024).decode('utf-8')) s.send(b'Hello,I am a client') print('-->>',s.recv(1024).decode('utf-8')) s.send(b'exit') s.close()
将两者放到两个.py文件中,先启动服务端
Waiting for connection...
再启动客户端
-->Hello,I am server!
-->> Loop_Msg: Hello,I am a client!
客户端
Waiting for connection...
Accept new connection from 127.0.0.1:60893...
-->>Hello,I am a client!
Connection from 127.0.0.1:60893 closed
UDP编程
服务端
import socket s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('127.0.0.1',9999)) print('Bind UDP on 9999...') while True: data,addr=s.recvfrom(1024) print('Received from %s:%s.'%addr) s.sendto(b'Hello,%s!'%data,addr)
客户端
import socket s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) for data in [b'Hello',b'World']: s.sendto(data,('127.0.0.1',9999)) print(s.recv(1024).decode('utf-8')) s.close()