基于socket网络编程的hello网络聊天小程序的python实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于socket网络编程的hello网络聊天小程序的python实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2104字,纯文字阅读大概需要4分钟。
内容图文
![基于socket网络编程的hello网络聊天小程序的python实现](/upload/InfoBanner/zyjiaocheng/652/42cc657e617c4a39bf4c2e565c805f56.jpg)
1、基本概念
1.1socket套接字
可以简单的把套接字理解为一个网络地址和端口的组合,它是基于tcp/ip协议,操作系统提供的一种系统调用,用作进程间通信,主要是是不同主机之间的进程通信。因为有了套接字,所以一般网络程序员不需要直接和tcp/ip打交道,主流的操作系统一般都提供了相应的API调用。比如,使用socket,你可以绑定相应的网络IP以及端口号,可以选择使用tcp或者是使用udp。
1.2tcp和udp
TCP协议则是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达。TCP协议会通过握手建立连接,然后,对每个IP包编号,确保对方按顺序收到,如果包丢掉了,就自动重发。许多常用的更高级的协议都是建立在TCP协议基础上的,比如用于浏览器的HTTP协议、发送邮件的SMTP协议等。
使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。
1.3客户端和服务器
创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。举个例子,当我们在浏览器中访问新浪时,我们自己的计算机就是客户端,浏览器会主动向新浪的服务器发起连接。如果一切顺利,新浪的服务器接受了我们的连接,一个TCP连接就建立起来的,后面的通信就是发送网页内容了。
1.4原理图
2、基于python的hi简单聊天程序
2.1服务器程序
import socket sk = socket.socket() # 默认是AF_INET、SOCK_STREAM address = ('127.0.0.1', 12345) sk.bind(address) # 将主机号与端口绑定到套接字 sk.listen(3) # 设置并启动TCP监听器 print('waitting...') while True: conn, addr = sk.accept() # 被动接受TCP连接,一直等待连接到达 print('连接到达',addr) while True: data = conn.recv(1024) # 接收TCP消息,并制定最大长度 if not data: print('连接已断开!') conn.close() break print(str(data, 'utf8')) inp = input('>>') conn.send(bytes(inp, 'utf8')) #向客户端回送信息
注意这里使用的是tcp,SOCK_STREAM代表的是tcp协议
2.2客户端程序
import socket sk = socket.socket() # 默认是AF_INET、SOCK_STREAM address = ('127.0.0.1', 12345) sk.connect(address) #连接服务端 while True: inp = input('>>') if inp == 'exit': break sk.send(bytes(inp, 'utf8')) #向服务端发送信息 data = sk.recv(1024) print(str(data, 'utf8')) else: sk.close()
运行结果:
3、使用strace追踪程序代码的api调用
strace python3 server.py
运行结果:
内容总结
以上是互联网集市为您收集整理的基于socket网络编程的hello网络聊天小程序的python实现全部内容,希望文章能够帮你解决基于socket网络编程的hello网络聊天小程序的python实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。