python实现C/S架构下的Socket模块TCP通信

本文介绍了使用Python实现TCP通信的过程,包括Server服务端的socket初始化、绑定IP和端口、监听及通讯,以及Client客户端的连接、发送和接收数据。详细展示了C/S架构下的TCP通讯流程。
摘要由CSDN通过智能技术生成

这是C/S架构的实现方式,主要是TCP/UDP通讯,先介绍TCP通信,TCP通讯的流程图:
在这里插入图片描述
整体由Client客户端和Server服务端组成。

一 Server服务端

(1)通过socket实例化出来一个TCP的对象(socket())。
(2)绑定IP和端口号。
由于Client客户端是通过IP和端口号来找寻Server服务端的,
所以在Server初始化之后就要绑定一个IP和端口(bind())。
(3)监听。让Server处于监听状态(listen()),
当有Client想要向Server通讯的时候,Client会发起一个连接请求,
如果server的通过了accept(),就可以开始通过read()读取信息,或者通过wrtie()发送信息。
(4)通讯结束以后,端口关闭,等待下一个连接。
import socket#导入socket模块,用于TCP/IP通讯 

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化一 个socket模块的对象 

serversocket.bind(('127.0.0.1', 55555))#绑定服务器的IP地址,以及通讯端口
serversocket.listen(5)#设置监听,在这里面的参数(int类型)控制连接当前服务器的 最大设备数量 

while True: 
    # 建立客户端连接
    conn,addr = serversocket.accept() 
    print("连接地址: %s" % str(addr)) 

    rec = conn.recv(1024) 
    print (rec.decode('utf‐8')) 

    msg = input()
    conn.send(msg.encode('utf‐8')) 

connsocket.close()

二 Client客户端

当Server服务端处于等待状态后,Client客户端就可以随时来连接。

(1)实例化TCP对象。需要通过socket来实例化出来一个TCP对象(socket())。
(2)然后通过指定的IP地址和端口号发起连接请求(connect())。
(3)连接成功以后就可以通过read()读取信息,或者通过write()发送信息。
(4)通讯结束以后,端口关闭。
import socket,sys,time

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化一 个socket模块的对象
clientsocket.connect(('127.0.0.1', 55555))#建立客户端与服务端的连接 56 while True: 7 #发送数据 
ms = input() 
clientsocket.send(ms.encode('utf‐8')) 
#接收数据 
rev = clientsocket.recv(1024)#接收小于1024字节的数据 
easygui.msgbox(msg = rev.decode('utf‐8'))
print(rev.decode('utf‐8')) 
if ms == 'Q!': 
    break 
clientsocket.close()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PySide6是一个用于创建跨平台桌面应用程序的Python库,它是Qt框架的Python绑定。在PySide6中,可以使用socket通信实现网络通信功能。 使用socket通信需要以下步骤: 1. 导入socket模块:在Python中,可以使用`import socket`语句导入socket模块。 2. 创建socket对象:使用`socket.socket()`函数创建一个socket对象,可以指定通信协议和类型。例如,可以使用`socket.AF_INET`表示IPv4协议,`socket.SOCK_STREAM`表示使用TCP协议。 3. 连接服务器:使用socket对象的`connect()`方法连接到服务器。需要指定服务器的IP地址和端口号。 4. 发送和接收数据:使用socket对象的`send()`方法发送数据,使用`recv()`方法接收数据。发送和接收的数据需要进行编码和解码。 5. 关闭连接:使用socket对象的`close()`方法关闭连接。 下面是一个简单的示例代码,演示了如何使用PySide6和socket实现客户端与服务器之间的通信: ```python import sys from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QTextEdit import socket class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Socket通信示例") self.setGeometry(100, 100, 400, 300) self.text_edit = QTextEdit(self) self.text_edit.setGeometry(10, 10, 380, 200) self.send_button = QPushButton("发送", self) self.send_button.setGeometry(150, 220, 100, 30) self.send_button.clicked.connect(self.send_data) self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.connect(("服务器IP地址", 8888)) def send_data(self): data = self.text_edit.toPlainText().encode() self.socket.send(data) received_data = self.socket.recv(1024).decode() self.text_edit.append(received_data) def closeEvent(self, event): self.socket.close() if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec()) ``` 请注意,上述示例中的服务器IP地址和端口号需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值