网络编程之基于socket实现简单套接字通信

qdylan 2019-11-12

网络编程作为软件开发中的重要板块,理解TCP/IP通信原理并掌握Socket编程知识可以帮助你更容易、更深入的理解各种上层应用协议如HTTP/FTP/SMTP等的实现,能开发自己的协议。

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接。今日讲解网络编程之基于socket实现简单套接字通信

视频加载中...

套接字通过传输层进行数据通信。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。

网络编程之基于socket实现简单套接字通信

通过Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket,另一个运行于服务器端面,称为ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。

▪ 服务器监听 指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

▪ 客户端请求 指由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。

▪ 连接确认 当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。

服务端

import socket
#1、买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# print(phone)

#2、绑定手机卡
phone.bind(('127.0.0.1',8081)) #0-65535:0-1024给操作系统使用

#3、开机phone.listen(5)

#4、等电话链接
print('starting...')
conn,client_addr=phone.accept()

#5、收,发消息
data=conn.recv(1024) #1、单位:bytes 2、1024代表最大接收1024个bytes
print('客户端的数据',data)
conn.send(data.upper())

#6、挂电话
conn.close()

#7、关机
phone.close()

客户端

import socket

#1、买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# print(phone)

#2、拨号
phone.connect(('127.0.0.1',8081))

#3、发,收消息
phone.send('hello'.encode('utf-8'))
data=phone.recv(1024)
print(data)

#4、关闭
phone.close()

网络编程之基于socket实现简单套接字通信

网络编程之基于socket实现简单套接字通信

网络编程之基于socket实现简单套接字通信

网络编程之基于socket实现简单套接字通信

相关推荐