TCP,UDP

    技术2025-12-16  15

    1.tcp服务器:

    from socket import socket # 1.创建socket, 参数不填默认ipv4,tcp传输 server_sk = socket() # 2.绑定,服务器ip和端口 server_sk.bind(('0.0.0.0', 9898)) -- 说明:'0.0.0.0'表示本机所有ipv4地址 # 3.变为监听套接字 # 使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了 # 监听,最多允许128个接入 server_sk.listen(128) print('服务器在等待,客户端的到来 .... ') while True: # 如果有客户端来链接服务器,那么就产生一个新的套接字专门为这个客户端服务 # client_sk用来为这个客户端服务 # server_sk就可以省下来专门等待其他新客户端的链接 # 4.阻塞直到接收到客户端连接 client_sk,addr = server_sk.accept() # 5.接受客户端信息 data = client_sk.recv(1024) print('接收到的数据为:', data.decode('utf-8')) # 6.向客户端发送 'OK' client_sk.send('OK'.encode('utf-8')) client_sk.close # 关闭为这个客户端服务的套接字

    2.tcp客户端构建流程:

    from socket import socket # 1.创建socket, 参数不填默认ipv4,tcp传输 client_sk = socket() # 2.链接服务器,(server_ip, server_port) client_sk.connect(('127.0.0.1', 9898)) # 3.向服务器发送消息'你好' client_sk.send('你好'.encode("utf-8")) # 4.接收对方发送过来的数据,最大接收1024个字节 recvData = client_sk.recv(1024) print('服务器发来的数据为:', recvData.decode('utf-8')) # 关闭客户端套接字 client_sk.close()

    3.客户端例2:

    import socket # 创建一个socket: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立连接: s.connect(('172.16.10.119', 80)) # 发送数据: s.send(b'GET / HTTP/1.1\r\n172.16.10.119:8080/bwie/mhIndex.do\r\nConnection: close\r\n\r\n') # 接收数据: buffer = [] while True: # 每次最多接收1k字节: d = s.recv(1024) if d: buffer.append(d) else: break data = b''.join(buffer) # 关闭连接: s.close() header, html = data.split(b'\r\n\r\n', 1) print(header.decode('utf-8')) # 把接收的数据写入文件: with open('sina.html', 'wb') as f: f.write(html)

    4.服务器例2:

    import socket # 创建一个socket: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 监听端口: s.bind(('127.0.0.1', 9999)) s.listen(5) print('Waiting for connection...') def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr) sock.send(b'Welcome!') while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8') == 'exit': break sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8')) sock.close() print('Connection from %s:%s closed.' % addr) while True: # 接受一个新连接: sock, addr = s.accept() # 创建新线程来处理TCP连接: t = threading.Thread(target=tcplink, args=(sock, addr)) t.start()
    Processed: 0.016, SQL: 9