使用Socket库进行TCP编程

1.服务器端TCP连接

1.1建立基于IPv4和TCP的Socket

# 导入Socket库及依赖库
import socket
import threading
import time
# 建立TCP连接
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

1.2绑定监听的地址和端口

# 绑定地址及监听端口
s.bind(('127.0.0.1',6666))

1.3监听端口

# 调用listen方法监听端口
s.listen(5)
print('Wait for connection...')

1.4创建服务器端应答函数

# 创建服务器端应答函数
def tcp(sock, addr):
    print('Accept new connecton from %s:%s...' % addr)
    sock.send(b'Success!')
    while True:
        data=sock.recv(1024)
        time.sleep(1)
        if not data or data.decode('utf-8') == 'exit':
            break
        sock.send(('Welcome! %s!' % data.decode('utf-8')).encode('utf-8'))
    sock.close()
    print('Connection from %s:%s closed.' % addr)

1.5循环处理客户端连接

# 循环处理客户端连接
while True:
    # 接受来自客户端的新连接
    sock, addr = s.accept()
    # 创建新线程来处理TCP连接
    t=threading.Thread(target=tcp, args=(sock, addr))
    t.start()

2.客户端TCP连接

2.1建立客户端TCP连接

# 导入Socket库
import socket
# 建立TCP连接
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 与服务器建立连接
s.connect(('127.0.0.1',6666))
# 接收服务器的连接成功提示信息
print(s.recv(1024).decode('utf-8'))
# 发送数据并接收服务器返回的结果
for data in [b'Tom',b'Jerry',b'Spike']:
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
# 发送退出信息断开连接
s.send(b'exit')
s.close()

运行结果

Success!
Welcome! Tom!
Welcome! Jerry!
Welcome! Spike!
>>> 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据攻城小狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值