• 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
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    JavaScript Array 属性 构造器 将数组值转为大写
    Eslint 配置及规则说明
    Vue基于vue-quill-editor富文本编辑器使用心得
    css display:flex 属性
    HTML5本地存储之localStorage、sessionStorage
    图片充满div
    微信小程序 Input框提交后清空
    前端简历怎么写
    响应式与自适应的区别
    JS点击子元素不触发父元素点击事件
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121910.html
Copyright © 2020-2023  润新知