数据结构的理解

有关学习了TCP/IP的数据结构,能够发送数据并且发送数据要有反馈,这里我知道了主要发送数据给服务器

给定的服务器代码:

from socketserver import ThreadingTCPServer, StreamRequestHandler
import time
import threading

class TcpSer(ThreadingTCPServer):
    def __init__(self,server_address, RequestHandler):
        self.daemon_threads = True
        self.allow_reuse_address = True
        ThreadingTCPServer.__init__(self, server_address, RequestHandler)

        
class RequestHandler(StreamRequestHandler):

    wfiles = []
    rfiles = []
    def handle(self):       
        flag = True
        while flag:
            time.sleep(0.5)
            clientaddress = self.client_address

            if self.wfile not in self.wfiles:
                self.wfiles.append(self.wfile)
                print(str(clientaddress)+"已连接")
                self.wfile.write(b'hello')
            self.getData()

    
#     服务器可以接收如下命令:help,connect,exit
#     服务器端收到help,返回“commands include help,connect,exit”
#     收到,connect,返回“connect code is 400”
#     收到,exit,返回“exit code is {500}”
# 数据解析           
    def getData(self):
        while True:
            time.sleep(0.5)
            input = self.rfile.read(1024)
            input = input.decode().strip()
            print(input)
            if input == 'help':
                self.wfile.write(b'commands include help,connect,exit')
            if input == 'connect':
                self.wfile.write(b'connect code is 400')
            if input == 'exit':
                self.wfile.write(b'exit code is {500}')
            if input not in ['help','connect','exit']:
                self.wfile.write(b'the command is wrong')
        

if __name__ == '__main__':
    
    server_address = ('',10001)   
    tcp = TcpSer(server_address,RequestHandler)
    print("服务已开启\r\n")
    tcp.serve_forever()

 

开启服务器会有提示:

客户端:

 这里我只进行了发送数据,并没有数据进行切片处理反馈回来规定的数据。

然后可以发送数据:

 

遇到的问题及其解决办法

 

一:[WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试

1:C:\Users\wj>netstat -ano|findstr 10001
  TCP    0.0.0.0:10001          0.0.0.0:0              LISTENING       4086
  UDP    0.0.0.0:10001           *:*                                   4086
2:C:\Users\wj>tasklist |findstr     4086
KGService.exe                  4086 Console                    3     14,400 K
 
3:C:\Users\wj>taskkill /pid   4086/F
成功: 已终止 PID 为 8124 的进程。

二:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in position 0:invalid start byte

 

1:用notepad++打开文件,在工具栏找到编码,将ANSI编码改为UTF-8偏码,重新保存就可以用了

2:还可以将# -*- coding:utf-8 -*-改为#-*-coding:GBK -

三:ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
三:四:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

 原因:同一个进程开两个文件

四:如图情况

原因:代码的地址应该为hostname ='localhost'

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值