网络编程_笔记

socket编程

from socket import*

socket又叫套接字,指的是实现通信的两个端,这两个端又分为服务器套接字和客户端套接字
Python中提供了一个socket模块来支持socket编程

1、服务器套接字

1)创建套接字对象

socket(family=AF_INET, type= SOCK_STREAM)
family ——设置ip类型,AF_INET-ipv4, AF_INET6-ipv6
type ——设置数据的传输方式,SOCK_STREAM-TCP协议,SOCK_DGRAM-UDP

2)绑定ip和端口

bind((ip地址,端口号))
ip地址 -字符串;服务器程序运行在哪台计算机上,ip地址就写哪台计算机的ip
端口号 -整型;范围是0-65535,其中0-1024是著名端口,有自己的特殊意义一般不使用

3)等待连接并且设置同一时间能够接收的请求数量

server.listen(420)

4)让服务器保持一致的运行状态

5)接收请求

6)接收客户端发送的数据

recv(数据大小)—接收数据并且设置一次性能够接收最大数据

7)给客户端发送数据

send(数据)——发送数据,数据的类型必须是bytes

8)关闭连接

server = socket()
server.bind(('10.7.181.84', 8888))
server.listen(420)
while True:
    print('开始接听')
    # 当执行到accept()的时候回停下来,直到有客户端给当前服务器发送请求为止
    connect, address = server.accept()
    print('接收到请求')
    # print(connect, address)
    while True:
        recv_data = connect.recv(1024)
        print('接收', recv_data.decode(encoding='utf-8'))  # 补充:二进制转字符串 —— 二进制对象.decode()
        # print('接收', str(recv_data, encoding='utf-8'))  # 补充:二进制转字符串 —— str(二进制对象)
        send_message = 'HTTP/1.1 200 OK\r\n\r\n' + input('服务器:')
        connect.send(send_message.encode())
    connect.close()

from socket import *

2、客户端套接字

1)创建套接字对象

2)发送请求

client.connect((ip地址,端口号))

3)发送消息

4)接收消息

while True:
    client = socket()
    client.connect(('10.7.181.84', 8888))
    send_message = input('客户端:')
    client.send(send_message.encode())
    re_data = client.recv(1024)
    print(re_data.decode(encoding='utf-8'))
client.close()
from socket import *
server = socket()
server.bind(('10.7.181.84', 12345))
server.listen(420)
while True:
    print('开始接听:')
    connect, address = server.accept()
    while True:
        with open('aaa.jpg', 'rb') as f:
            connect.send(f.read())
    connect.close()
from socket import *
client = socket()
client.connect(('10.7.181.84', 12345))
while True:
    re_data = client.recv(1024)
    with open('bbb.jpg', 'ab') as f:
        f.write(re_data)
    if(len(re_data)) < 1024:
        break

你可能感兴趣的:(网络编程_笔记)