day32

"""

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

  socket是什么?

      翻译过来称为套接字

   是对底层的 TCP IP UDP   等网络协议进行封装

      使得上层的言论,他就是一个封装好的模块!

      要完成网络通讯,只需要使用系统提供的socket模块就行

 TCP和UDP是传输层最常见的协议

 主要控制传输数据的方式

 TCP的传输的方式

       优点:通过三次握手来与服务器建立连接

           可以保证数据的完整性

               a机器给b机器发送数据包 要求b机器必须立即返回一个确认包

                a机器会等待一段时间,如果超时还没有收到确认,否则重发数据

        缺点:传输频率低 

        使用场景:文子聊天,支付宝转账等

     UDP

         传输方式:不需要建立连接,自己发送

         缺点:不能保证数据的完整性

         优点:传输效率比TCP高

         使用场景:视频通话,语音通话,UOP

Python中的socket

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

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

    使用socket来完成TCP通讯

        应该先完成服务器的代码编写

"""

3.TCP服务器

import socket

1.创建一个代表服务器的socket对象

s=socket.socket()

2.绑定端口号和IP地址

    127.0.0.1 表示当前这个电脑的IP

address=("127.0.0.1",8080)

s.bind(address)

print("服务器已启动!")

3.开始监听这个端口

5表示 可以有5个于半连接状态的连接 指的是最大的连接数

s.listen(5)

print("test")

4.接受连接请求

    该函数是阻塞的 会卡主程序的执行,必须等到有一个客户端进来才会被执行

    返回元组 第一个是代表客户端的socket对象 第二客户端的地址信息

client,c_address=s.accept()

print("有一个连接已建成!")

print(c_address)

 给客户端发送数据

5.读写数据

  接受数据

res=client.recv(1024)

print(res)

6.关闭连接

 s.close()

4.TCP客户端

import socket

1.创建客户端的socket对象

c=socket.socket()

2.指定服务器的IP和port

server_address=("127.0.0.1",8080)

3.建立连接

c.connect(server_address)

4.读写数据

发送数据到服务器

c.send("hello 我是客户端!".encode("utf-8))

5.关闭连接

c.close()

5.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("utm-8"),("127.0.0.1",10000))

  关闭资源

s.close()

6.UDP客户端

import socket

 1.创建socket(type=socket.SOCK_DGRAM)

while True:

   msg=input(">>>:")

   c.sendto(msg.encode("utf-8"),(127.0.0.1",10000))

c.close()

7.聊天的客户端

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)

       client.close()

       break

7.聊天服务器

"""

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

"""

import socket

server=socket.socket()

server.bind(("127.0.0.1",65535))

server.listen(5)

clint,c_address=server.accept()

while True:

  data = client.recv(1024).decode("utp-8")

  print("收到来自客户端的数据:",data)

          如果对方发来一个over我就关闭连接

           if data == "over":

                client.close()

                break

              把对方传过来的数据转换为大写 在发回去!

           client,send(data.upper().encode("utf-8"))

 关闭服务端

server.close()

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

原文地址:https://www.cnblogs.com/hui2002/p/9898200.html