skyhail 2017-12-07 19:48 采纳率: 0%
浏览 4456

select 在一个非套接字上尝试了一个操作。

#!/usr/bin/env python3

-*- coding: utf-8 -*-

import socket,sys
from time import ctime
import select
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1',9999))
print('try to connect...')
Myset1=[s,sys.stdout]
he=[]
be=[]
info=''
while info!='exit':
readyMyset, readyOutput, readyException = select.select(Myset1, he, be)
for indata in readyMyset:
if indata == readyMyset:
try:
info = s.recv(2048).decode('utf-8')
except socket.error as e:
print('recv make error:%s' % e)
sys.exit(1)
print('[%s] %s' % (ctime(), info))
else:
info = input()
try:
s.sendall(info.encode('utf-8'))
except socket.error as e:
print('send make error:%s' % e)
sys.exit(1)
s.close()

报错信息
Traceback (most recent call last):
File "D:/pycharm/one/pytesttwo.py", line 14, in
readyMyset, readyOutput, readyException = select.select(Myset1, he, be)
OSError: [WinError 10038] 在一个非套接字上尝试了一个操作。

这是什么原因

  • 写回答

1条回答 默认 最新

  • COCO_AS 2017-12-10 07:12
    关注

    看上去可能是你的服务器端没有开启,如果是linux, 可以用nc -l 9999 进行测试

     #!/usr/bin/env python3
    #-*- coding: utf-8 -*-
    import socket,sys
    from time import ctime
    import select
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
        print('try to connect...')
        s.connect(('127.0.0.1',9999))
        Myset1=[s,sys.stdout]
        he=[]
        be=[]
        info=''
        while info!='exit':
            readyMyset, readyOutput, readyException = select.select(Myset1, he, be)
            for indata in readyMyset:
                if indata == readyMyset:
                    try:
                        info = s.recv(2048).decode('utf-8')
                    except socket.error as e:
                        print('recv make error:%s' % e)
                        sys.exit(1)
                    print('[%s] %s' % (ctime(), info))
                else:
                    info = input()
                    try:
                        s.sendall(info.encode('utf-8'))
                    except socket.error as e:
                        print('send make error:%s' % e)
                        sys.exit(1)
    except Exception as e: 
        print("something's wrong with socket connection. Exception is %s" %  e)
    finally:
        s.close()
    
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?