Python 超简单的聊天程序
客户端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput destination IP:") # data = raw_input("Plz imput what you want to submit:") port = 51423 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) try : s.connect((host, port)) except socket.gaierror, e: print "Address-related error connecting to server: %s" % e sys.exit( 1 ) except socket.error, e: print "Connection error: %s" % e sys.exit( 1 ) while 1 : try : data = raw_input ( "I say: " ) s.send(data) buf = s.recv( 1024 ) if len (buf): print "he say: " + buf except : print "Dialogue Over" s.close() sys.exit( 0 ) |
服务器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import socket, traceback, sys host = '' port = 51423 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) s.bind((host, port)) s.listen( 1 ) ClientSock, ClientAddr = s.accept() while 1 : try : buf = ClientSock.recv( 1024 ) if len (buf): print "he say: " + buf data = raw_input ( "I say: " ) ClientSock.sendall(data) except : print "Dialogue Over" ClientSock.close() sys.exit( 0 ) |
模拟qq聊天,语言环境:Python3
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# 编写一个程序,模拟qq聊天 # 要求:程序可以同时发消息和收消息,发和收的过程中程序不退出 # 思路:使用socket来完成(socket 是全双工模式,可以实现收和发同时进行),定义俩个线程,一个负责发消息、一个负责收消息 from threading import Thread from socket import * def rec_data(): while True : rec_info = udpsocket.recvfrom( 1024 ) print ( "\r>>%s:%s" % (rec_info[ 1 ], rec_info[ 0 ].decode( "gb2312" ))) print ( "<<" , end = "") def send_date(): while True : send_mes = input ( "<<" ) udpsocket.sendto(send_mes.encode( "gb2312" ), (desip, desport)) udpsocket = None desip = "" desport = 0 def main(): global udpsocket global desip global desport desip = input ( "对方IP:" ) desport = int ( input ( "对方端口:" )) udpsocket = socket(AF_INET, SOCK_DGRAM) udpsocket.bind(("", 9001 )) tr = Thread(target = rec_data) ts = Thread(target = send_date) tr.start() ts.start() tr.join() ts.join() if __name__ = = '__main__' : main() |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/wdz306ling/article/details/86623436