socket

一:客户端/服务器架构

即sc架构

1.硬件c/s架构  2.软件c/s架构

二:计算机网络架构 (在上一篇博客中有)

https://blog.csdn.net/gaoyishu91/article/details/80059455

三:socket

为什么有socket,因为在应用层中软件产生的数据,必须打包好,通过tcp传输给网络层,那么数据打包必须遵循tcp格式才行。socket可以给一个工具去简单的实现这一过程。

socket是应用层和tcp/ip协议族通信的中间软件抽象层,它是一组接口。让socket去组织数据,以符合指定的协议。

socket应该有一个服务端和一个应用端,服务端相当于服务器,应用端相当于一个个的软件。

服务端

import socket
ip_log = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024
phone = socket.socket(socket.AF_INET,SOCK_STREAM)  #初始化工厂函数
phone.bind(ip_log)  #套接字:IP地址 + 端口
#基于socket要写一个客户端和一个服务端 服务端需要放到网络之中 客户端需要分发给网络中
#如果客户端想要找到服务端 通过IP找到服务器在哪个网络中 IP地址中也包含mac地址,mac地址是世界唯一的 定位到了那台机器
#端口是定位这台机器的程序 socket服务端 所以IP+端口标识互联网中机器的程序地址
phone.listen(back_log)  #开机,5代表最大backlog的数目  
#TCP是基于双向链接进行通讯,每一次通讯需要双向链接,将建立链接的请求放入backlog中

conn,addr = phone.accept()  #拿到一个元组 (conn.addr)
#addr 是客户端的地址

data = conn.recv(buffer_size = 1024)   #收发消息是字节类型
conn.send(data)

conn.close()
phone.close

客户端:

import socket
ip_port = ('0.0.0.1',8080)
back_up = 5
buffer_size = 1024
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #tcp

phone.connect(ip_log)

phone.send(data.encode('utf-8'))  #bytes(data,encoding = 'utf-8')
phone.recv(buffer_size)

phone.close()

###########客户端和服务端循环收发消息###########
from socket import *
ip_port = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024

tcp_server = socket(AF_INET,SOCK_STREAM)
tcp.server = bind(ip_bind)
tcp_server.listen(back_log)

conn,addr = tcp.server.accept()
print('双向链接是',conn)
print('链接地址是',addr)

while TRUE:  #(循环起来)
    data = conn.recv(buffer_size)
    print('客户端发来的消息是',data.decode('utf-8')  #解码
    conn.send(info.encode('utf-8'))

conn.close()
tcp_server.close()

from socket import *
ip_port = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024


tcp_client = socket(AF_INET,SOCK_STREAM)
tcp_client.connect(ip_log)

while TRUE:   #(循环)
    
    tcp_client.send('hello'.encode('utf-8'))
    tcp_client.recv(data.decode('utf-8'))  #收发只能是字节格式

tcp.client.close()






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值