我是靠谱客的博主 健壮电脑,最近开发中收集的这篇文章主要介绍python tcp客户端服务器闪退的问题(初级),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    一句废话:最近学习python核心编程,遇到了运行简单的(有多简单自己看)tcp服务器与客户端黑屏闪退的问题

原因:

>>>from socket import *

>>> help(socket.recv)
Help on method_descriptor:

recv(...)
    recv(buffersize[, flags]) -> data
   
    Receive up to buffersize bytes from the socket.

>>> help(socket.send)
Help on method_descriptor:

send(...)
    send(data[, flags]) -> count
   
    Send a data string to the socket.

因为工作模式为:客户端发送-服务器接收-服务器发送-客户端接收

即客户端发送的数据类型必须符合服务器接收的数据类型,即字节流,表现为

客户端:发送,data.encode(),因为要给服务器接收用

服务器:接收,data.decode(),因为要给服务器send用

服务器:发送,data.encode(),因为要给客户端接收用

客户端:接收,data.decode,因为要显示输出

详细代码如下:

服务器:

from socket import *
from time import ctime
Host=''
Port=3306
BufSIZE=1024
Addr=(Host,Port)
Sst=socket(AF_INET,SOCK_STREAM)
Sst.bind(Addr)
Sst.listen(5)
while True:
    print('....Wait Connect....')
    Cst,Addr=Sst.accept()
    print('....Connect From ',Addr,'....')
    while True:
        data=Cst.recv(BufSIZE).decode()
        Cst.send(data.encode())
    Cst.close()
Sst.close()

客户端:

from socket import *
Host='localhost'
Port=3306
BuffSIZE=1024
Addr=(Host,Port)
Cst=socket()
Cst.connect(Addr)
while True:
    data=input('>').encode()
    Cst.send(data)
    data=Cst.recv(BuffSIZE).decode()
    print('>:',data)

不足之处,敬请谅解,同时请帮忙指正,不胜感激。

附有如下问题:

1.socket.send()要求是字符串的参数,data.encode()为什么不报错,编码之后指定不是字符串了呀?

2.tcp服务器是个死循环,但是当关闭客户端的时候,它报个异常就退出了,怎么改变?

3.客户端也是个死循环,当服务器关闭的时候他不知道,运行时不报错,怎么让客户端知道,服务器关闭了呢?

 

转载于:https://blog.51cto.com/52syc/1775643

最后

以上就是健壮电脑为你收集整理的python tcp客户端服务器闪退的问题(初级)的全部内容,希望文章能够帮你解决python tcp客户端服务器闪退的问题(初级)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部