找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4641|回复: 0

[求助] python多线程+网络问题(求帮助)

1

主题

1

帖子

24

积分

贫民

积分
24
b3069741 发表于 2014-7-29 22:59:55 | 显示全部楼层 |阅读模式
我写了一个简单的tcp的双人聊天
想用多线程写,一个线程接受消息并打印,一个线程发送消息

客户端和服务端都有这两个线程
但是就是不能用,我也不知道哪错了。。

上代码:
客户端:
  1. __author__ = 'longlong'
  2. import socket
  3. import threading
  4. HOST = '127.0.0.1'
  5. PORT = 23459
  6. ADDR = (HOST, PORT)

  7. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  8. s.connect(ADDR)


  9. def soc_fa():
  10.     try:
  11.         while True:
  12.             data = raw_input('>')
  13.             if not data:
  14.                 break
  15.             s.send(data)
  16.             if not data:
  17.                 break
  18.     except:
  19.         print 'welcome use me next!'
  20.         s.close()


  21. def soc_shou():
  22.     try:
  23.         while True:
  24.             conn, addr = s.accept()
  25.             data = conn.recv(1024)
  26.             if not data:
  27.                 break
  28.             print data
  29.     except:
  30.         print 'welcome use me next!'
  31.         s.close()

  32. threading.Thread(target=soc_fa).start()
  33. threading.Thread(target=soc_shou).start()
复制代码



服务端
  1. import socket
  2. import threading

  3. def soc_shou(conn):
  4.     try:
  5.         while True:
  6.             data = conn.recv(1024)
  7.             if not data:
  8.                 break
  9.             print '<', data
  10.     except:
  11.         print 'welcome use me next!'
  12.         conn.close()
  13.         s.close()


  14. def soc_fa(conn):
  15.     try:
  16.         while True:
  17.             data = raw_input('>')
  18.             if not data:
  19.                 break
  20.             conn.send(data)
  21.             if not data:
  22.                 break
  23.     except:
  24.         print 'welcome use me next!'
  25.         conn.close()
  26.         s.close()

  27. HOST = '127.0.0.1'
  28. PORT = 23459

  29. ADDR = (HOST, PORT)

  30. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  31. s.bind(ADDR)
  32. s.listen(10)
  33. print ('wait for a connect...')
  34. conn, addr = s.accept()
  35. print 'connect from', addr
  36. threading.Thread(target=soc_shou, args=(conn, )).start()
  37. threading.Thread(target=soc_fa, args=(conn, )).start()
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表