使用python实现tcp通信

TCP协议使服务器和客户端通过socket进行通信

服务器端通信流程如下:

1.使用socket类创建一个套接字对象

2.使用bind(ip,port)方法绑定IP地址和端口号

3.使用listen()方法开始TCP监听

4.使用accept0方法等待客户端的连接

5.使用recv0/send0方法接收/发送数据

6.使用close0关闭套接字

以下是代码:

from socket import socket, AF_INET, SOCK_STREAM

# AF_INET 用于Internet之间的进程通信
# SOCK_STREAM 表示的是用TCP协议编程

# (1)创建socket对象
server_socket = socket(AF_INET, SOCK_STREAM)

# (2)绑定IP地址和端口号
ip = '127.0.0.1'
port = 8888
server_socket.bind((ip, port))

# (3)开始监听
server_socket.listen(5)
print("服务已启动")

# (4)等待客户端连接
client_socket, client_addr = server_socket.accept()

#  (5)接收来自客户端的数据
data = client_socket.recv(1024)
print('客户端发送的数据是:', data.decode('utf-8'))  # decode解码

# (6)关闭连接
client_socket.close()





客户端通信方式如下:

1.使用socket类创建一个套接字对象

2.使用connect(host,port)设置连接的主机lP和主机设置的端口号

3.使用recv()/send()方法接收/发送数据

4.使用close()关闭套接字
以下是代码

import socket
from encodings.utf_8 import encode

# (1)创建客户端socket对象
client_socket = socket.socket()

# (2)向目标服务器发送请求
client_socket.connect(('127.0.0.1', 8888))

# (3)发送数据
client_socket.send('welcome back '.encode('utf-8'))

# (4)关闭连接
client_socket.close()

print('发送完毕')



当然也可以实现多次通信

服务器端

import socket

# 模块名.类名
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind(('127.0.0.1', 8888))

server.listen(5)
print("服务器已启动")

client_socket, client_add = server.accept()

# 接收来自客户端的数据
info = client_socket.recv(1024).decode('utf-8')  # while循环的4步骤 info初始化
while info != 'bye':  # 条件判断
    if info != '':
        print("收到数据:", info)

    data = input("发送数据:")
    client_socket.send(data.encode('utf-8'))
    if data == 'bye':
        break  # 循环
    info = client_socket.recv(1024).decode('utf-8')  # 改变变量,避免死循环

# 关闭socket对象
server.close()
client_socket.close()

客户端

import socket

cli = socket.socket()
cli.connect(('127.0.0.1', 8888))
print('建立连接')

info = ''
while info != 'bye':
    send_data = input("客户端要发送:")
    cli.send(send_data.encode('utf-8'))

    if send_data == 'bye':
        break

    info = cli.recv(1024).decode('utf-8')
    print("收到服务器的数据:", info)

cli.close()

以下是使用到的函数的介绍:

posted @   potato0  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示