socket网络编程
服务器端:
我们使用 socket 模块的 socket 函数来创建一个 socket 对象。socket 对象可以通过调用其他函数来设置一个 socket 服务。
现在我们可以通过调用 bind(hostname, port) 函数来指定服务的 port(端口)。
接着,我们调用 socket 对象的 accept 方法。该方法等待客户端的连接,并返回 connection 对象,表示已连接到客户端。
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/usr/bin/python # coding=utf-8 import sys import socket BUF_SIZE = 1024 server_addr = ( '127.0.0.1' , 8888 ) try : server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error,msg: print "Creating Socket Failure. Error Code:" + str (msg[ 0 ]) + "Message:" + msg[ 1 ] sys.exit() print "Socket Created!" server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1 ) #设置地址复用 try : server.bind(server_addr) except socket.error,msg: print "Binding Failure. Error Code:" + str (msg[ 0 ]) + " Message:" + msg[ 1 ] sys.exit() print "Socket Bind!" server.listen( 5 ) print "Socket listening " while True : client,client_addr = server.accept() print "Connected by" , client_addr while True : sendMsg = client.recv(BUF_SIZE) client.sendall(sendMsg) server.close() |
客户端:
接下来我们写一个简单的客户端实例连接到以上创建的服务。端口号为 12345。
socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的服务商。连接后我们就可以从服务端后期数据,记住,操作完成后需要关闭连接。
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import sys import socket BUF_SIZE = 1024 server_addr = ( '127.0.0.1' , 8888 ) try : client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error,msg: print "Creating socket Failure. Error Code :" + str (msg[ 0 ]) + "Message:" + msg[ 1 ] sys.exit() try : client.connect(server_addr) except socket.error,msg: print "Connect server Failure. Error Code:" + str (msg[ 0 ]) sys.exit() while True : data = raw_input ( "Please input send your message >" ) if not data: print "input can't empty,Please input again.." continue client.sendall(data) data = client.recv(BUF_SIZE) print data client.close() |
Python Internet 模块
以下列出了 Python 网络编程的一些重要模块:
详解请看以下地址:
http://www.runoob.com/python/python-socket.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)