socket scoketserver

Posted ming-yuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket scoketserver相关的知识,希望对你有一定的参考价值。

import socket
sk = socket.socket()            # 创建了一个socket对象
# sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)    # 避免服务重启的时候报address already in use
sk.bind((127.0.0.1,8080))        # 绑定一台机器的(ip,端口)    # 回环地址 - 指向自己这台机器
sk.listen()                        # 建立监听等待别人连接
conn,addr = sk.accept()            # 阻塞:在这里等待直到接到一个连接
print(conn)                        # conn是连接
print(addr)                        # addr是对方的地址
msg = conn.recv(1024)            # 对方和我说的话    # 有收必有发 收发必相等
print(msg)
conn.send(bbyebye)            # 字节码(.encode(‘utf-8‘))和对方打招呼
conn.close()                    # 挂电话
sk.close()                        # 关机

import socket
sk = socket.socket()            # 买个手机
sk.connect((127.0.0.1,8080))  # 拨号
sk.send(bhello!)
ret = sk.recv(1024)
print(ret)
sk.close()
# 黏包现象

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)    # 建立一个socket对象, 指定以UDP协议的形式来连接
sk.bind((127.0.0.1,8080))                    # 指定服务的地址
msg,addr = sk.recvfrom(1024)                # 接收消息,发送端的地址
    # 用户用于接收数据报的缓冲区要比数据报大,不然会报错。
print(msg,addr)
sk.sendto(bHELLO,addr)                    # 给发送端回复消息
sk.close()                                    # 关闭socket连接

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.sendto(bhello,(127.0.0.1,8080))        # 直接给服务器发送一段消息
msg,addr = sk.recvfrom(1024)                # 接收对面的回信
print(msg)
sk.close()
 

 

scoketserver

import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        self.request.send(bhello)    # conn
        msg = self.request.recv(1024).decode(utf-8)
        print(msg)
server = socketserver.ThreadingTCPServer(
                (127.0.0.1,9000),
                MyServer)
server.serve_forever()

 

以上是关于socket scoketserver的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

Python 之 Socket编程(TCP/UDP)

Python干货socket中的listen()参数(数字)到底代表什么?

paper 78:sniff抓包程序片段

通过 c# 与 socket.io 服务器通信

微信小程序代码片段