+ -
当前位置:首页 → 问答吧 → python中套接字的问题(有示例)

python中套接字的问题(有示例)

时间:2010-11-08

来源:互联网

python版本:3.1

服务器端:
Python code

#coding:utf-8

from socket import *
from time import ctime

HOST=""
PORT=21567
BUFSIZ=1024
ADDR=(HOST,PORT)

tcpSerSock=socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
    print("Waiting for connection...")
    (tcpCliSock,addr)=tcpSerSock.accept()
    print("...connected from:",addr)

    while True:
        data=tcpCliSock.recv(BUFSIZ)
        if not data:
            print("Server:Empty")
            break
        print("server:",data)

        tcpCliSock.send(data) #运行到这里报错
        tcpCliSock.close()

tcpSerSock.close()



客户端
Python code

#coding:utf-8
from socket import *
HOST="localhost"
PORT=21567
BUFSIZ=1024
ADDR=(HOST,PORT)

tcpCliSock=socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)

while True:
    data=input('>')
    if not data:
        break

    data=data.encode("utf-8")
    print("encode:",data)
    data=bytes(data)
    print("bytes:",data)
       
    tcpCliSock.send(data)
    data=tcpCliSock.recv(BUFSIZ)
    if not data:
        print("Client:Empty")

    print("Client receive:",data)
    break
    

tcpCliSock.close()



操作的步骤如下:
1:为服务器端和客户端分别开了两个IDLE
2:先运行服务器端,良好。
3:然后运行客户端,良好。
4:在客户端的IDLE中输入字符abcd,良好
5:服务器端已收到数据,服务器端IDLE显示的打印如下:
Python code

Waiting for connection...
...connected from: ('127.0.0.1', 15617)
server: b'abcd'



但是在执行下一句的时候报错:
socket.error: [Errno 10038] 在一个非套接字上尝试了一个操作。

我怀疑是
Python code

   tcpCliSock.send(data) 


有问题,但不知道为什么会报错?

请大家帮忙看看是怎么回事?

作者: Dic4000   发布时间: 2010-11-08

服务器代码tcpCliSock.close()后面应该break跳出最内层while吧...

作者: angel_su   发布时间: 2010-11-08

热门下载

更多