网络编程-day2

1 网络通信协议

Tcp udp的区别 重点(*****)

TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;文件传输程序。

UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。

直接看图对比其中差异

Tcp三次握手四次挥手(******)

 

2 tcp udp协议下的socket

基于TCP的socket通讯流程图片:

 1 import socket
 2 from socket import SOL_SOCKET,SO_REUSEADDR
 3 sk = socket.socket()
 4 # sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 
 5 sk.bind(('127.0.0.1',8090))
 6 sk.listen()
 7 conn,addr = sk.accept()  #在这阻塞,等待客户端过来连接
 8 while True:
 9     ret = conn.recv(1024)  #接收消息  在这还是要阻塞,等待收消息
10     ret = ret.decode('utf-8')  #字节类型转换为字符串中文
11     print(ret)
12     if ret == 'bye':        #如果接到的消息为bye,退出
13         break
14     msg = input('服务端>>')  #服务端发消息
15     conn.send(msg.encode('utf-8'))
16     if msg == 'bye':
17         break
18 
19 conn.close()
20 sk.close()
21 
22 只能与第一个客户端通信server端代码
server
 1 import socket
 2 sk = socket.socket()
 3 sk.connect(('127.0.0.1',8090)) #连接服务端
 4 
 5 while True:
 6     msg = input('客户端>>>')  #input阻塞,等待输入内容
 7     sk.send(msg.encode('utf-8'))
 8     if msg == 'bye':
 9         break
10     ret = sk.recv(1024)
11     ret = ret.decode('utf-8')
12     print(ret)
13     if ret == 'bye':
14         break
15 sk.close()
16 
17 只能与第一个客户端通信client端代码
client

基于UDP的socket通讯流程:

udp_server
1 import socket
2 ip_port=('127.0.0.1',9000)
3 udp_sk=socket.socket(type=socket.SOCK_DGRAM)
4 udp_sk.sendto(b'hello',ip_port)
5 back_msg,addr=udp_sk.recvfrom(1024)
6 print(back_msg.decode('utf-8'),addr)
udp_client

猜你喜欢

转载自www.cnblogs.com/274831730wang/p/10216702.html
今日推荐