|
我写了一个简单的tcp的双人聊天
想用多线程写,一个线程接受消息并打印,一个线程发送消息
客户端和服务端都有这两个线程
但是就是不能用,我也不知道哪错了。。
上代码:
客户端:
- __author__ = 'longlong'
- import socket
- import threading
- HOST = '127.0.0.1'
- PORT = 23459
- ADDR = (HOST, PORT)
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect(ADDR)
- def soc_fa():
- try:
- while True:
- data = raw_input('>')
- if not data:
- break
- s.send(data)
- if not data:
- break
- except:
- print 'welcome use me next!'
- s.close()
- def soc_shou():
- try:
- while True:
- conn, addr = s.accept()
- data = conn.recv(1024)
- if not data:
- break
- print data
- except:
- print 'welcome use me next!'
- s.close()
- threading.Thread(target=soc_fa).start()
- threading.Thread(target=soc_shou).start()
复制代码
服务端- import socket
- import threading
- def soc_shou(conn):
- try:
- while True:
- data = conn.recv(1024)
- if not data:
- break
- print '<', data
- except:
- print 'welcome use me next!'
- conn.close()
- s.close()
- def soc_fa(conn):
- try:
- while True:
- data = raw_input('>')
- if not data:
- break
- conn.send(data)
- if not data:
- break
- except:
- print 'welcome use me next!'
- conn.close()
- s.close()
- HOST = '127.0.0.1'
- PORT = 23459
- ADDR = (HOST, PORT)
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.bind(ADDR)
- s.listen(10)
- print ('wait for a connect...')
- conn, addr = s.accept()
- print 'connect from', addr
- threading.Thread(target=soc_shou, args=(conn, )).start()
- threading.Thread(target=soc_fa, args=(conn, )).start()
复制代码
|
|