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 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler