udp与tcp

一、udp

 1 from socket import *
 2 
 3 
 4 def send_msg(udp_socket):
 5     send_data = input("请输入发送数据:")  
 6     udp_socket.sendto(send_data.encode("utf-8"),("192.168.43.37",8080))
 7 
 8 def recv_msg(udp_socket):
 9     recv_data = udp_socket.recvfrom(1024)  #本次接受最大字节数
10     #接收元祖(数据,(发送方IP,端口))
11     recv_msg = recv_data[0]  
12     send_addr = recv_data[1]
13     #打印接受数据
14     print('%s:%s' % (str(send_addr),recv_msg.decode('gbk')))
15 
16 def main():
17     udp_socket = socket(AF_INET,SOCK_DGRAM)
18     local_addr = ('',8080)
19     udp_socket.bind(local_addr)  #必须绑定自己电脑IP端口
20     while True:
21         send_msg(udp_socket)
22         recv_msg(udp_socket)
23         if send_msg == "exit":
24             break
25         #udp_socket.sendto(b"abcd",("192.168.43.37",8080))
26     #3.接受数据
27     #4.关闭套接字
28     udp_socket.close()
29 
30 
31 if __name__ == "__main__":
32     main()
收取与发送udp

UDP编程的一般步骤是:
1、创建一个socket函数;
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、循环接收数据,用函数recvfrom();
5、设置对方的IP地址和端口等属性;
6、发送数据,用函数sendto();
7、关闭套接字;

二、tcp

 1 from socket import *
 2 
 3 
 4 def main():
 5     #创建套接字
 6     tcp_client_socket = socket(AF_INET,SOCK_STREAM)
 7 
 8     server_ip = input("请输入IP:")
 9     server_port = int(input("端口:"))
10     server_addr = (server_ip,server_port)
11     #链接服务器
12 
13     tcp_client_socket.connect(server_addr)
14     #发送数据
15     send_data = input("发送:")
16 
17     tcp_client_socket.send(send_data.encode("gbk"))
18     #接受数据
19     recvdata = tcp_client_socket.recv(1024)
20     print("接收到的:",recvdata.decode('utf-8'))
21     #关闭套接字
22     tcp_client_socket.close()
23 
24 
25 if __name__ == "__main__":
26     main()
tcp客户端

 TCP编程的客户端一般步骤是:

1、创建一个socket函数;
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭套接字;

 1 from socket import *
 2 
 3 
 4 def main():
 5     #创建套接字
 6     tcp_server_socket = socket(AF_INET,SOCK_STREAM)
 7     
 8     address = ('',8080)
 9     #绑定ip地址
10     tcp_server_socket.bind(address)
11 
12     #监听状态
13     
14     tcp_server_socket.listen(128) #让默认套接字由主动变被动
15     #等待客户端链接
16     while True:     #多个客户
17         client_socket,client_addr = tcp_server_socket.accept()
18         print("新客户端:%s" % str(client_addr))
19         #接收数据
20         while True:     #多次服务
21             recv_data = client_socket.recv(1024)
22             print("客户端发送接收到的:",recv_data.decode('gbk'))
23             #如果recv解堵塞
24             #1.客户端发送了数据
25             #2.客户端调用close
26             if not recv_data:
27                 break
28         client_socket.close()
29         print("客户端:%s已发送完毕" % str(client_addr))
30         
31     tcp_server_socket.close()
32 
33 
34 if __name__ == "__main__":
35     main()
tcp服务器

TCP编程的服务器端一般步骤是:

1、创建一个socket函数;
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;

三、区别:

1、tcp面向连接,udp无连接,发送数据前不需要建立连接

2、tcp传输数据安全

3、tcp传输支持一对一通信,而udp传输支持多样通信

原文地址:https://www.cnblogs.com/ybxw/p/11116967.html