2018.11.2

Posted jutao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.11.2相关的知识,希望对你有一定的参考价值。

"""
学习网络编程 其实就是在学socket

socket是什么?
翻译过来称为套接字
是对底层的 TCP IP UDP 等网络协议进行封装
使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议
程序员的言论,他就是一个封装好的模块!
要完成网络通讯,只需要使用系统提供的socket模块就行

 

TCP和UDP是传输层最常见的协议
主要控制传输数据的方式
TCP的传输方式
优点:通过三次握手来与服务器建立连接
可以保证数据的完整性
a机器给b机器发送数据包 要求b机器必须立即返回一个确认包
a机器会等待一段时间,如果超时还没有收到确认,则重发数据
缺点:传输效率低
使用场景: 文字聊天,支付宝转账等,
UDP
传输方式:不需要建立连接,直接发送
缺点: 不能保证数据的完整性
优点:传输效率比TCP高
使用场景:视频通话,语音通话,UDP

 

python中的socket

在使用socket的时候用户需要关心的是 ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data

在写网络编程的时候,必然是有两台代码,对应着客户端和服务器

使用socket来完成TCP通讯
应该先完成服务器的代码编写

"""
UDP交互
服务器
import socket
# 1.创建socket对象
s = socket.socket(type=socket.SOCK_DGRAM)

# 2.绑定端口和ip
s.bind(("127.0.0.1",10000))

while True:
# 3.接受数据
res = s.recv(1024)
print(res)

while True:
msg = input(">>>:")
# 需要获取对方的ip和端口
#s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))

# 关闭资源
s.close()

客户端
import socket
# 1.创建socket对象
c = socket.socket(type=socket.SOCK_DGRAM)
while True:
msg = input(">>>:")
c.sendto(msg.encode("utf-8"),("127.0.0.1",10000))

c.close()

简单的互相聊天程序 TCP
客户端
import socket

client = socket.socket()

client.connect(("127.0.0.1",65535))

while True:
# 发送
client.send(input(">>>:").encode("utf-8"))

# 接收
data = client.recv(1024).decode("utf-8")
print(data)
if len(data) == 0:
client.close()
break

"""
正常的聊天的程序 客户端发送的数据 先发送到服务器端 服务器端把消息转发给你的目标好友


"""
服务器
import socket

server = socket.socket()
server.bind(("127.0.0.1",65535))
server.listen(5)

client, c_address = server.accept()

while True:
data = client.recv(1024).decode("utf-8")
print("收到来自客户端的数据:",data)
# 如果对方发来一个over 我就关闭连接
if data == "over":
client.close()
break
# 把对方传过来的数据转换为大写 在发回去!
client.send(data.upper().encode("utf-8"))

# 关闭服务器端
server.close()

# 需求 客户端输入cmd命令 发送给服务器执行 服务器执行(subprocess)完后返回 执行结果










































以上是关于2018.11.2的主要内容,如果未能解决你的问题,请参考以下文章

2018/11/2

2018.11.2

c_cpp 16. 3Sum Closest- Med - 2018.11.2

今日份水题2018.11.2

2018/11/2 周五集训队第三次比赛补题题解

2018.10.2浪在ACM 集训队第三次测试赛