Discuss / Python / 正确理解方法!

正确理解方法!

Topic source

客户端: import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect(('127.0.0.1',9999))#步骤1:请求连接服务器 print(s.recv(1024).decode('utf-8'))#步骤2:打印出从服务器发送过来的字节‘welcome’ for data in [b'Michael',b'Tracy',b'Sarah']:#步骤3:也就是循环3次发送给服务器 s.send(data) print(s.recv(1024).decode('utf-8'))#步骤4:每次都打印出‘hello,xxx’ s.send(b'exit')#步骤5:发送‘exit’给服务器,目的就是为了服务器调出这个循环 s.close()#步骤6:发送完了当然就关闭咯

服务器: import socket, threading, time

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('127.0.0.1', 9999))#搭建一个与客服端的通道

s.listen(5)#有客服端访问了,马上执行,最多访问5个客服端 print('Waiting for connection...')

def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr) sock.send(b'Welcome!')#步骤3:发送Welcome给客服端,也就是客服端一来就看到的 while True: data = sock.recv(1024)#步骤4:接受客服端发送过来的字节,recv()就是接收字节的意思,

    time.sleep(1)
    if not data or data.decode('utf-8') == 'exit':#步骤5:如果服务器没接受到‘exit’这个字符串,就忽略这个步骤
        break
    sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))#步骤6:把客服端接受过来的字节加工在发送回去,也就是‘michael’前加上‘hello’
sock.close()#步骤7:接受完了就关闭吧
print('Connection from %s:%s closed.' % addr)

while True:

sock, addr = s.accept()#步骤1:接受客服端的端口号和地址

t = threading.Thread(target = tcplink, args = (sock, addr))#步骤2:把函数tcplink(sock,addr)传入进去

t.start()#步骤2:开始执行tcplink()函数了

我是萌新,琢磨了一天理解的,不知道对不对,不要误导人家咯23333


  • 1

Reply