【1】Python创建简单TCP服务器与TCP客户端

服务器端:

  1. 创建服务器的socket对象
  2. 监听ip和端口号
  3. 设置最大连接数
  4. 创建一个客服处理线程:接收客户端发来的数据,再向客户端发送数据
  5. 开启线程,等待客户连接。
# TCPserver.py

import socket
import threading

bind_ip = "0.0.0.0"  #监听所有可用的接口
bind_port = 51112   #非特权端口号都可以使用

#AF_INET:使用标准的IPv4地址或主机名,SOCK_STREAM:说明这是一个TCP服务器
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#服务器监听的ip和端口号
server.bind((bind_ip,bind_port))

print("[*] Listening on %s:%d" % (bind_ip,bind_port))

#最大连接数
server.listen(5)

#客户处理线程
def handle_client(client_socket):

    request = client_socket.recv(1024)

    print("[*] Received: %s" % request)
    #向客户端返回数据
    client_socket.send("hi~".encode())

    client_socket.close()

while True:

    #等待客户连接,连接成功后,将socket对象保存到client,将细节数据等保存到addr
    client,addr = server.accept()

    print("[*] Acception connection from %s:%d" % (addr[0],addr[1]))

    client_handler = threading.Thread(target=handle_client,args=(client,))
    client_handler.start()

客户端:

  1. 创建客户端socket对象
  2. 用socket对象连接到服务器端(target_host, target_port是服务器端的ip与端口)
  3. 向服务器端发送数据
  4. 从服务器端接收数据
# TCPclient.py

import socket

target_host = "127.0.0.1" #服务器端地址
target_port = 51112  #必须与服务器的端口号一致

while True:

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

    client.connect((target_host,target_port))   

    data = input(">")

    if not data:
        break

    client.send(data.encode())

    response = client.recv(1024)

    print(response)

client.close()

你可能感兴趣的:(Python)