Python实验6--网络编程

题目1

1.编写程序实现基于多线程的TCP客户机/服务器程序。
(1)创建服务器端套接字Socket,监听客户端的连接请求;
(2)创建客户端套接字Socket,向服务器端发起连接;

服务器端套接字

1.	import socket  
2.	  
3.	# 服务器端套接字  
4.	server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
5.	# 监听本机9999端口号  
6.	server.bind(('127.0.0.1', 9999))  
7.	# 开始监听,5代表等待连接的最大数量  
8.	server.listen(5)  
9.	while True:  
10.	# accept()会等待并返回一个客户端的连接:  
11.	    sock,addr = server.accept()  
12.	    print(addr)  
13.	    # print(sock)  
14.	    data = sock.recv(1024)  
15.	    print(data.decode('utf-8'))  
16.	    sock.close()  

客户端套接字

1.	import socket  
2.	client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
3.	  
4.	client.connect(('127.0.0.1',9999))  
5.	  
6.	client.send(b'abc')  # 字节形式发送
7.	  
8.	client.close()  


运行时,先启动服务器端,再启动客户端
启动服务器端后,服务器即使在接收到客户端发来的数据后,也不会自动关闭。
运行结果如下:
在这里插入图片描述
客户端发送数据完成后就关闭了。
在这里插入图片描述

题目2

2.编写程序实现基于UDP的客户端/服务器程序。
(1)创建Socket套接字;
(2)发送/接受数据;
(3)关闭套接字。

服务器端基于UDP接收数据并输出来自客户端的ip和端口以及发来的数据

	# 服务器端接收数据,并在控制台输出客户端的地址和发来的数据  
	""" 
	TCP是建立可靠连接,并且通信双方都可以使用流的形式发送数据,相对于TCP,UDP则是面向无连接的协议。 
	使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号就可以直接发送数据包,但是能不能到达不能保证 
	它虽然传输数据不可靠,但是他的优点相比于TCP来讲是速度快。 
	"""  
	import socket  
	  
	def main():  
	    # socket.SOCK_DGRAM指定是UDP类型  
	    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  
	    # 获取本机ip  
	    ip = socket.gethostbyname(socket.gethostname())  
	  
	    # 绑定端口  
	    s.bind((ip,8088))  
	    # 服务器端接收数据并输出  
	    data,addr=s.recvfrom(1024)  
	    print('Receive data from %s:%s' % addr)  
	    print(data.decode('utf-8'))  
	    s.close()  
	  
	if __name__ == '__main__':  
	    main()  



客户端以基于UDP发送数据给服务器

1.	# 客户端基于UDP向服务器发送数据  
2.	import socket  
3.	def main():  
4.	    # socket.SOCK_DGRAM指定是UDP类型  
5.	    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  
6.	    # 获取本机ip地址  
7.	    ip = socket.gethostbyname(socket.gethostname())  
8.	  
9.	    try:  
10.	        # 客户端发送数据  
11.	        s.sendto(b'12354',(ip,8088))  
12.	    except:  
13.	        print('发送失败')  
14.	    print('发送成功')  
15.	    # 关闭连接  
16.	    s.close()  
17.	if __name__ == '__main__':  
18.	    main()  

最后客户端控制台输出“发送成功”
服务器的控制台输出
Receive data from 192.168.1.4:55197 12354
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43672652/article/details/106801995