套接字tcp

tcp服务端

服务端应该满足的特性
1、一直对外提供服务
2、并发地提供服务

import socket


phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #  创建服务端的套接字对象,声明为网络传输用,数据为基于SOCK_STREAM=tcp协议的数据流形式


phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #就是他,在bind前加

phone.bind(("127.0.0.1",8080)) # 绑定ip与port,双括号为本地回环

phone.listen(5) # 声明半连接池的容量为5
print('starting %s:%s' %("127.0.0.1",8080))


while True:
    conn,client_addr = phone.accept() # 等待客户端来建立连接
    print((client_addr))
   
    while True:  # 客户端建立连接后,等待数据传来
        try:
            data = conn.recv(1024) # 最大接受的字节个数
            if len(data) == 0:      # 针对linux系统
                break
            print("收到的客户端数据:",data.decode('utf-8'))
            conn.send(data.upper())  # 将处理好的数据再发给客户端
        except Exception:
            break


    conn.close() # 挂电话,通信循环结束后,立即关闭当前连接,从半连接池接入下个客户端或等待新的客户端
phone.close() # 关机

tcp客户端

import socket


phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # SOCK_STREAM =》 tcp协议


phone.connect(("127.0.0.1",8080))


while True:
    msg = input(">>>:").strip()
    phone.send(msg.encode('utf-8'))
    data = phone.recv(1024)
    print("服务的返回的数据: ",data.decode('utf-8'))



phone.close()

你可能感兴趣的:(编程,笔记,网络,socket,python)