写一个类继承socket时遇到的问题(TCP)

主要为题出在服务器端的accept()函数,他返回两个参数,一个套接字和一个客户端的ip和端口组成的元组。

 

问题就出在这个套接字这里,我们继承了socket这个类,这个套接字创建的时候是通过socket创建的,

 

后面我们不可以直接使用它,因为它调用的方法都是socket的方法,所以我们只能将他作为参数,传来传去。

代码见下:

 

import socket


class My_socket(socket.socket):

    def __init__(self, encoding='utf-8'):
        self.encoding = encoding
        super(My_socket, self).__init__()


    def mysend(self, data):
        return super(My_socket, self).send(data.encode(self.encoding))

    def my_send(self, data, conn):
        return conn.send(data.encode(self.encoding))

    def myrecv(self, num):
        msg = super(My_socket, self).recv(num).decode(self.encoding)
        return msg

    def my_recv(self, buffersize, conn):
        msg = conn.recv(buffersize).decode(self.encoding)
        return msg

 

 

import my_TCP

sk = my_TCP.My_socket()

sk.bind(('127.0.0.1', 7084))

sk.listen(4)

while 1:

    conn, addr = sk.accept()
    print(conn, type(conn))

    while 1:

        res_s = sk.my_recv(1024, conn)

        print(res_s)

        if res_s == 'q':
            break

        res_f = input('>>>>>')

        sk.my_send(res_f, conn)

        if res_f == 'q':
            break

    conn.close()

sk.close()
server端

 

import my_TCP

sk = my_TCP.My_socket()

adress = ('127.0.0.1', 7084)

sk.connect(adress)

while 1:

    meg = input('>>>')

    sk.mysend(meg)

    if meg == 'q':
        break

    res_s = sk.myrecv(1024)

    if res_s == 'q':
        break

    print(res_s)

sk.close()
client端

 

转载于:https://www.cnblogs.com/xiao-xue-di/p/9474616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值