两种架构:C/S client and serv B/S browser and server OSI七层模型 TCP UDP 下面程序是基于UDP的socket通信 #********************本文共两个程序,第一个模拟服务器server,第二个模拟客户端client******************************** import socket server = socket.socket(type=socket.SOCK_DGRAM) # 创建一个服务器socket对象 # server.bind(('127.0.0.1',9000)) # 监听本机9000端口,里面元组,所以看着是两个括号 server.bind(('10.10.42.80',7777)) # 监听本机9000端口,里面元组,所以看着是两个括号 #接收从客户端发来的消息 # msg,addr = server.recvfrom(1024) # 接收到的信息,IP地址 #向客户端发送消息 # server.sendto(b'I am server',addr) # b把汉字字符转换为2进制 while True: # 接收从客户端发来的消息 msg,addr = server.recvfrom(1024) # 接收到的信息,IP地址 msg=msg.decode('utf-8') # 把客户发来的utf-8转换成uniconde print('客户地址:',addr) print('发的消息是:',msg) content = input('我给客户的回复是:') content = content.encode('utf-8') # 向客户端发送消息 server.sendto(content,addr) # b把汉字字符转换为2进制 #关闭套接字 server.close() #******************************************************** import socket serv = socket.socket(type=socket.SOCK_DGRAM) serv.bind(('127.0.0.1',9000)) msg,addr = serv.recvfrom(1024) msg = msg.decode('utf-8') print('服务器收到',msg,'从',addr) content = input('fwq要发送的信息是:').encode('utf-8') serv.sendto(content,addr) serv.close() #******************************************************** ''' import socket serv = socket.socket(type=socket.SOCK_DGRAM) serv.bind(('127.0.0.1',9000)) msg,addr = serv.recvfrom(1024) msg = msg.decode('utf-8') print('客户端发来的是:',msg) content = input('要发给客户的是:').encode('utf-8') serv.sendto(content,addr) serv.close()
#************************下面是客户端client*****************************************************
import socket,time # SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。 # SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。 client = socket.socket(type=socket.SOCK_DGRAM) #创建一个服务器socket对象 # ip_port = ('127.0.0.1',9000) #服务器地址和端口 # ip_port = ('10.10.42.35',7777) # content = input('我要给server发送的是:') content = content.encode('utf-8') # content=content.encode('utf-8') while True: for i in range(2,254): for j in range(65536): ip = '10.10.42.'+str(i) ip_port = (ip,j) client.sendto(content,ip_port) print(i,j) # c=content+str(i) # c=c.encode('utf-8') # client.sendto(c,ip_port) #向服务器发送一条信息 # time.sleep(0.5) msg,addr = client.recvfrom(1024) #接收从服务器返回的一条信息 msg=msg.decode('utf-8') print(msg,addr) #****************************************************** import socket cln = socket.socket(type=socket.SOCK_DGRAM) content = input('用户要发送的是:').encode('utf-8') ip_port = ('127.0.0.1',9000) cln.sendto(content,ip_port) msg,addr = cln.recvfrom(1024) msg = msg.decode('utf-8') print('fwq发过来的是',msg,addr) #****************************************************** """ import socket cln = socket.socket(type=socket.SOCK_DGRAM) ip_port = ('127.0.0.1',9000) content = input('要发给服务器的是:').encode('utf-8') cln.sendto(content,ip_port) msg,addr = cln.recvfrom(1024) msg = msg.decode('utf-8') print('客户收到的是:',msg)