寫乙個類繼承socket時遇到的問題(TCP)

2022-06-16 17:45:22 字數 1774 閱讀 2520

主要為題出在伺服器端的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端

寫乙個繼承方法

原型 鏈式繼承 父類 function people name people.prototype.eat function food 子類 functionme me.prototype newpeople frank 建立繼承關係 frank test code var frank newme c...

python寫語音識別時遇到的乙個小bug

初學python者,在用python寫語音識別時發現python中input 和raw input的區別,下面是原始碼 from aip import aipspeech from pydub import audiosegment import time 你的id api key 你的apikey...

用C 寫乙個不能被繼承的類

用c 設計乙個不能被繼承的類 方法1 把構造 析構函式設為私有,但這樣就不能例項化了。於是定義公有的靜態函式來建立和釋放類的例項。class sealedclass0 sealedclass0 public static sealedclass0 getinstance static void de...