Talk is cheap, show me the code!!!

服务端socket_server_demo01.py代码如下:

# coding: utf-8

"""
    socket 服务器端

    基于套接字socket的网络通信
"""

import socket                   # 导入socket模块
# from time import ctime
import time

# HOST = socket.gethostname()   # 主机名, '127.0.0.1' or 'localhost'
HOST = '127.0.0.1'              # 主机名, '127.0.0.1' or 'localhost'
PORT = 21929                    # 设置端口号
BUFSIZ = 1024
ADDR = (HOST, PORT)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   # 创建socket对象
s.bind(ADDR)                    # 将地址(主机名/端口号对)绑定到套接字上
s.listen(5)                     # 设置并启动TCP监听器

while True:
    print 'waiting for connection...'
    c, addr = s.accept()        # 被动接受TCP客户端连接, 一直等待直到连接到达(阻塞)
    print '...connected from: ', ADDR     # 打印连接地址

    while True:
        data = c.recv(BUFSIZ)   # 接收TCP消息
        if not data:
            break
        # c.send('[%s] %s' % (ctime(), data))
        # c.send('[{}] {}'.format(str(ctime()), data))    # 发送TCP消息
        c.send('[{}] {}'.format(time.strftime("%Y-%m-%d %H:%M:%S %A", \
                time.localtime()), data))    # 发送TCP消息
    c.close()               # 关闭套接字(关闭连接)
c.close()                   # 关闭套接字(关闭连接)

客户端socket_client_demo01.py代码如下:

# coding: utf-8

"""
    socket 客户端

    基于套接字socket的网络通信
"""

import socket                   # 导入socket模块

# HOST = socket.gethostname()   # 主机名, '127.0.0.1' or 'localhost'
HOST = '127.0.0.1'              # 主机名, '127.0.0.1' or 'localhost'
PORT = 21929                    # 设置端口
BUFSIZ = 1024
ADDR = (HOST, PORT)             # 地址, `主机名+端口` 对

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   # 创建socket对象
s.connect(ADDR)                 # 主动发起TCP服务器连接

while True:
    data = raw_input('> ')      # 待输入就绪状态
    if not data:
        break
    s.send(data)                # 发送输入的数据
    data = s.recv(BUFSIZ)       # 接收TCP消息
    if not data:
        break                   # 若无数据输入则跳出循环
    print data

s.close()                       # 关闭套接字(关闭连接)

运行结果:

python socket网络通讯