socket编程介绍

MAC是平面寻址,IP是二级寻址

单机模式------
服务端
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #AF_INET SOCK_STREAM
server.bind(("0.0.0.0",8000))
server.listen(5)
print("--start--")
conn,client_addr = server.accept()
print(conn,client_addr)

while True:
data = conn.recv(1024) #最大接收1024字节
print("recv from client:",data)
conn.send(b"got msg")

客户端:
import socket

client = socket.socket()
client.connect(("localhost",8000))

while True:
msg = input("msg>>:").strip()
if len(msg) == 0:continue
client.send(msg.encode())
print("send>>:",msg)

data = client.recv(1024)
print("receive from server>>:",data)

并发模式:

server端将执行的数据放到缓冲区,缓冲区满或者发送等待时间超时(一般在毫秒级)

 

7、socketserver编程

+------------+
| BaseServer |
+------------+ | v +-----------+ +------------------+ | TCPServer |------->| UnixStreamServer | +-----------+ +------------------+ | v +-----------+ +--------------------+ | UDPServer |------->| UnixDatagramServer | +-----------+ +--------------------+


基本的socketserver代码
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print("{} wrote:".format(self.client_address[0]))
        print(self.data)
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper())
if __name__ == "__main__":
    HOST, PORT = "localhost", 9999
    server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()

实现并发:

socketserver并发,必须选择使用以下一个多并发的类
class socketserver.ForkingTCPServer
class socketserver.ForkingUDPServer
class socketserver.ThreadingTCPServer
class socketserver.ThreadingUDPServer

 

转载于:https://www.cnblogs.com/feiyu_Team/p/6343530.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值