Discuss / Python / 简单的客户端--服务器程序

简单的客户端--服务器程序

Topic source

ywjco_567

#1 Created at ... [Delete] [Delete and Lock User]

需要做成两个文件,先运行服务器,再运行客户机。

# !/usr/bin/python3
# -*-coding:UTF-8-*-

import socket

def clint():
    '''客户端程序'''
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('127.0.0.1', 9999))    # 建立连接
    print(s.recv(1024).decode('utf-8'))    # 接收消息
    for data in [b'Michael', b'Tracy', b'Sarah']:
        s.send(data)    # 发送数据
        print(s.recv(1024).decode('utf-8'))
    s.send(b'exit')
    s.close()

if __name__ == '__main__':
    clint()
import socket
import threading
import time

def sever():
    '''服务器程序'''
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('127.0.0.1', 9999))    # 监听端口
    s.listen(5)
    print('Waiting for connection...')

    while True:
        sock, addr = s.accept()    # 接受一个新连接
        t = threading.Thread(target=tcplink, args=(sock, addr))    # 创建新线程来处理TCP连接
        t.start()

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)

if __name__ == '__main__':
    sever()

运行结果:

D:\Python37\python.exe D:/Python37/Code/socket_sever.py
Waiting for connection...
Accept new connection from 127.0.0.1:57406...
Connection from 127.0.0.1:57406 closed.

进程已结束,退出代码 -1
D:\Python37\python.exe D:/Python37/Code/socket_clint.py
Welcome!
Hello, Michael!
Hello, Tracy!
Hello, Sarah!

进程已结束,退出代码 0

  • 1

Reply