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(b'byebye')            # 字节码(.encode('utf-8'))和对方打招呼
conn.close()                    # 挂电话
sk.close()                        # 关机

import socket
sk = socket.socket()            # 买个手机
sk.connect(('127.0.0.1',8080))  # 拨号
sk.send(b'hello!')
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(b'HELLO',addr)                    # 给发送端回复消息
sk.close()                                    # 关闭socket连接

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.sendto(b'hello',('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(b'hello')    # conn
        msg = self.request.recv(1024).decode('utf-8')
        print(msg)
server = socketserver.ThreadingTCPServer(
                ('127.0.0.1',9000),
                MyServer)
server.serve_forever()

 

posted @ 2018-08-26 12:31  ming-yuan  阅读(203)  评论(0编辑  收藏  举报