服务器端和客户端IP:当前主机IP
分析给定通信程序中的client端和server端代码,对出现的粘包问题进行简单描述并分析出现的原因
设计一个方案解决通信中的粘包问题
对client端和server端程序进行修改,并验证方案的正确性
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 28 15:03:38 2019
@author: cyberspace
"""
import socket
ip_port = ('127.0.0.1',9980)
tcp_socket_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket_client.connect(ip_port)
poems = {'春夜喜雨':'好雨知时节,当春乃发生。随风潜入夜,润物细无声。野径云俱黑,江船火独明。晓看红湿处,花重锦官城。', \
'望岳':'岱宗夫如何?齐鲁青未了。造化钟神秀,阴阳割昏晓。荡胸生曾云,决眦入归鸟。会当凌绝顶,一览众山小。',\
'绝句':'两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。'}
for title, content in poems.items():
tcp_socket_client.send(title.encode('utf-8'))
tcp_socket_client.send('@'.encode('utf-8'))
tcp_socket_client.send(content.encode('utf-8'))
tcp_socket_client.send('$'.encode('utf-8'))
tcp_socket_client.close()
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 28 15:01:00 2019
@author: cyberspace
"""
import socket ,time
ip_port=('127.0.0.1', 9980)
tcp_socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_socket_server.bind(ip_port)
tcp_socket_server.listen(5)
conn, addr = tcp_socket_server.accept()
time.sleep(1)
msg = conn.recv(1024)
msg1 = msg.decode('utf-8')
msg2 = msg1.split('$')
msg_len = len(msg2)
i = 0
for i in range(msg_len-1):
msg3 = msg2[i].split('@')
print("题目:"+ msg3[0])
#print(msg3[0])
print("正文:"+ msg3[1] )
conn.close()
运行结果:
源码将会上传至资源