Python socket编程(基础)
2019-07-13 23:18
211 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39816087/article/details/95804627
简单版:
服务端代码:
[code]''' Created on 2019年7月9日 @author: Administrator ''' import socket sk = socket.socket() # get a object of socket ip_port = ('127.0.0.1',8888) #使用本地地址以及端口号 sk.bind(ip_port) sk.listen(5) while True: conn,address = sk.accept() # address 请求客户端的IP地址和端口 print(address) print(conn) st = "hello".encode() conn.send(st) flag = True while flag: data = conn.recv(1024) if data == "exit": flag =False print(data) conn.send("sb".encode()) conn.close()
客户端:
[code]''' Created on 2019年7月9日 @author: Administrator ''' import socket client = socket.socket() ip_port = ("127.0.0.1",8888) client.connect(ip_port) while True: data = client.recv(1024) msg = input("client->") client.send(msg.encode(encoding='utf_8', errors='strict')) print(data)
实现异步多线程:
服务端:
[code]''' Created on 2019年7月9日 @author: Administrator ''' import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): print(self.request,'\n',self.client_address,'\n',self.server) st = "hello".encode('utf8') conn = self.request conn.send(st) flag = True while flag: data = conn.recv(1024) if data == "exit": flag =False print(data) conn.send("sb".encode()) def setup(self): pass def finish(self): pass if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',9999),MyServer) server.serve_forever()
客户端:
[code]''' Created on 2019年7月9日 @author: Administrator ''' import socket client = socket.socket() ip_port = ("127.0.0.1",9999) client.connect(ip_port) while True: data = client.recv(1024) msg = input("client->") client.send(msg.encode(encoding='utf_8', errors='strict')) print(data) if data == 'exit': break
注意事项:(如果没有对传输的字符串进行 encode处理,会产生如下的异常,接收端想转回原来的编码,则decode)
[code]TypeError: a bytes-like object is required, not 'str'
原因:在这里,python3和Python2在套接字返回值解码上有区别。
相关文章推荐
- python基础---网络编程(socket编程)
- Python Socket编程基础篇
- Python基础之socket编程
- Python Socket编程基础篇
- Python网络编程基础笔记-poll实现非阻塞socket
- python socket编程基础知识
- Python基础-第七天-面向对象编程进阶和Socket编程简介
- Python socket编程基础
- 从零开始学Python第八周:详解网络编程基础(socket)
- python 网络编程基础学习笔记(1)-网络客户端-socket
- python socket编程基础(思维导图)
- python网络编程基础(连载)03 socket-tcp
- Python--基础之socket编程
- python基础之socket编程
- Python基础之socket编程
- Python基础:网络编程socket基本篇
- python基础之socket编程
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- Python网络编程之socket模块基础实例
- Python基础socket编程