码迷,mamicode.com
首页 > 其他好文 > 详细

一个hello/hi的简单的网络聊天程序

时间:2019-12-09 23:10:51      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:socket   host   lease   connect   mes   address   lin   lse   pytho   

  我选择使用python来实现hello/hi的简单网络聊天程序,源代码包括两个部分,客户端代码和服务器端代码,源代码部分如下图所示:

服务器端代码

 1 import socket
 2 
 3 HOST = 127.0.0.1
 4 PORT = 8888
 5 
 6 server = socket.socket()
 7 server.bind((HOST, PORT))
 8 server.listen(1)
 9 
10 print(fthe server is listening at {HOST}:{PORT})
11 print(waiting for conntection...)
12 conn, addr = server.accept()
13 
14 print(fconnect success addr={addr})
15 print(waiting for message)
16 while True:
17     msg = conn.recv(1024)
18     print(the clint send:, msg.decode())
19     response = input(enter your response: )
20     conn.send(response.encode())
21     print(waiting for answer)

客户端代码

 1 import socket
 2 import sys
 3 
 4 try:
 5     host, port = input(please enter host address like host:port: ).split(:)
 6 except ValueError:
 7     print(the address is wrong)
 8     sys.exit(-1)
 9 
10 if len(host) == 0 or len(port) == 0:
11     print(the address is wrong)
12     sys.exit(-1)
13 else:
14     client = socket.create_connection((host, int(port)))
15 
16     print(connect successfully. waiting for response...)
17 
18     client.send(bhello server.)
19     while True:
20         response = client.recv(1024)
21         print(the response is:, response.decode())
22         msg = input(please enter a answer: )
23         client.send(msg.encode())
24         print(waiting for response...)

  对于源代码实现的效果如下图所示,第一张图为服务器端代码,首先应当启动服务器端,然后等待客户端进行连接,之后再启动客户端如第二张结果图所示,启动客户端需要与服务器端进行连接,由于我使用的是本地的两个端,因此IP地址为127.0.0.1,端口为8888,之后连接成功,自动向服务器端发送一条消息,hello server,而服务器端需要我们来控制内容进行回复,至此客户端与服务器端已经可以正常进行通信了。

技术图片

技术图片

简要跟踪分析调用栈直到socket API接口

技术图片

  socket调用底层API接口的流程大致如上图所示。

  而我们所使用的socket与linux中的socket其实略有不同,python中的socket相当于封装好的linux的socket,使用起来较为简便,只需要提供ip地址,协议,端口号,即可创建一个套接字,等待连接或者进行与服务器端的连接。我们若想熟练使用linux的socket,就更需要对网络连接的过程进行深入的理解,每一步调用对应的API来实现所需的功能。

一个hello/hi的简单的网络聊天程序

标签:socket   host   lease   connect   mes   address   lin   lse   pytho   

原文地址:https://www.cnblogs.com/zhang512/p/12013769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!