TCP/IP协议

IP地址

端口:尽量不要小于1024 

TCP socket连接

 

传输过程

TCP socket API  ---python

简单的服务器程序:

server.py

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',8888))#绑定端口  是二元组   第一个‘’表示绑定本机,第二个是端口 8888
s.listen()  #监听8888端口


#等待客户端
conn_new_socket,address=s.accept()   #接收的也是 二元组  ,第一个是新的socket  第二个地址
#连接成功
print(address)

#开始连接
data=conn_new_socket.recv(1024) #最大接收字节
print("从客户端接受的:{0}".format(data.decode()))  #转换格式

#给客户端发数据
conn_new_socket.send('你好'.encode())#转码

#s释放资源
conn_new_socket.close()
s.close()

client.py

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器端
s.connect(('127.0.0.1', 8888))  # 服务器在本机127.0.0.1  端口8888
print('lianjie 建立')
#给服务器端发送数据
s.send(b'hello')
#服务器端接受
data=s.recv(1024)
print('f服务器接受消息:{0}'.format(data.decode()))
#
#释放资源
s.close()

先运行server  在运行client

结果:

server.py

client.py

上传图像文件

upload_server.py

import socket

Host = ''
port = 7890  # 端口

File_name = r'new121.png'
# 可以用with   不用写close了
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sk:
    sk.bind((Host, port))
    sk.listen(10)  # 监听数上限
    print('fuwuqi   start')

    while True:
        with sk.accept()[0] as conn:
            buffer = []  # 列表作为缓冲区
            while True:  # 反复接受客户端数据
                data = conn.recv(1024)
                if data:
                    buffer.append(data)
                else:
                    break
            b = bytes()  # 空的字节序列对象
            b = b.join(buffer)  # 连接列表内数据

        with open(File_name, 'wb') as f:
            f.write(b)  # 写入b

        print('接受完成')

upload_client.py

import  socket
host='127.0.0.1'
prot=7890
file='121.png'
with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as sk:
    sk.connect((host,prot))

    with open(file,'rb') as f:
        b=f.read()
        sk.sendall(b)
    print('上传完成')

------------------------------------------------------------------------------------------

UDP协议

 UDP  socket

例子:

UPD_server.py

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #使用UDP

s.bind(('',7890))  #本地IP   端口号
print('服务器启动')

#从客户端接收数据
data,client_address=s.recvfrom(1024)
print('从 客户端接收:{}'.format(data.decode()))

#给客户端发
s.sendto('你好'.encode(),client_address)

s.close()

UDP_client.py

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#地址
server_d=('127.0.0.1',7890)
#向服务器发送
s.sendto(b'Hello',server_d)

#从服务器接受数据
data,_=s.recvfrom(1024)
print('从服务器接受的:{}'.format(data.decode()))

s.close()

——————————————————————————————

通过URL访问网络资源

URL

Http协议

https   商业常用的

URLLib库

例子:

import urllib.request

with urllib.request.urlopen('http://www.sina.com.cn/') as response:
    data = response.read()  # 相当于文件类型  使用read
    html = data.decode()  # 解码
    print(html)   #打印网页html代码

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐