【python学习总结】编写一个socket程序

版权声明:转载请注明出处 https://blog.csdn.net/qq_42019406/article/details/81772252

socket :网络编程

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力, 通讯的多有底层都是socket。


编写socket一定要注意客户端和服务器端分开写,写在一个脚本中不能成功。
下面附上代码,先来TCP协议的服务器端和客户端

####server端
import socket           ###TCP
###创建一个套接字,用来处理接收和发送
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        ## AF_INET指的是ipv4协议   SOCK_STREAM指的是TCP协议

### 绑定ip和端口
s.bind(('192.168.0.77',3000))  ##bind 只接收一个元素,必须是元祖

### 监听
s.listen(3)  ##数字,指的是最大挂起数

### 接收
while True:
    clelnt,addr = s.accept()  ## 接收请求
    print(clelnt,addr)

### clelnt存放的是连接信息,addr中存放着客户端的ip和端口号
    reg=clelnt.recv(1024)   ## 接收数据,最大一次性接收1024字节
    print(reg)
    print(reg.decode('utf-8'))

    msg=input('>>>>>>>>>:')
    clelnt.send(msg.encode('utf-8'))

客户端

#####   client   客户端  TCP
import socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

##连接服务器
sock.connect(('192.168.0.77',3000))     ## 接收元祖

msg=input('>>>>>>>>')
sock.send(msg.encode('utf-8'))

reg=sock.recv(1024)

print(reg.decode('utf-8'))

sock.close()

这里写图片描述
当我们学会了编写基于TCP协议的socket,那UDP 的服务端和客户端就不会自通了。

#### server   UDP
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('192.168.0.77',30000))
while True:
    conn,addr = s.recvfrom(1024)  ## 接收
    print(conn.decode('utf-8'))
    msg='中国'
    s.sendto(msg.encode('utf-8'),addr)  ## 发送
####   客户端
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
data='你好'
addrs=('192.168.0.77',30000)
s.sendto(data.encode('utf-8'),addrs)
conn=s.recv(1024)

print(conn.decode('utf-8'))

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_42019406/article/details/81772252