Python网络编程基础笔记-以换行符作为字符串结束标识

1.接收以换行符为结束表示的字符串(服务器端)
# -*- coding: cp936 -*-
"""
接收以断行符作为结束标识的字符串
为了演示多次接收数据,故意将接收的缓冲区改小为20.
客户端发送的数据长度(以"\n"作为判断长度的表示,而不是NULL)应该大于20
"""
import socket
import sys
host = ""
port = 50000
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(5)
while 1:
    clientsock,clientaddr = s.accept()
    while 1:
        buf = clientsock.recv(20)
        # 判断发送的最好一个字符是否是'\n'
        if len(buf) != 0:
            # 为了便于查看每次的接收数据,使用了print,断行是print添加的
            print (buf)
            if buf[len(buf)-1] == '\n':
                break
    clientsock.close()
   
"""
输出结果:
00001111222233334444
55556666777788889999
每次recv服务器端会接收20个字符,如果接收到"\n"就表明客户端发送的字符串结束了,可以关闭socket了
"""
2.发送以换行符为结束标识的字符串(客户端)
# -*- coding: cp936 -*-
"""
发送以换行符作为结束标识的字符串
发送的字符串长度应该大于服务器接收缓冲区的长度(20),否则无法在服务器端演示多次调用recv
"""
import socket
host = "localhost"
port = 50000
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send("0000111122223333444455556666777788889999" + "\r\n")
s.close()