首页 > 编程语言 >Socket编程

Socket编程

时间:2024-05-03 12:00:49浏览次数:22  
标签:tmp Socket 0.0 编程 server client data socket

一、Socket是什么

Socket本身不是一个协议,是一个套接字,操作系统为了方便大家直接使用tcp协议而存在的一个抽象层,它把复杂的TCP/IP协议隐藏在接口后面。

二、Socket编程

 三、socket编程实例

socket通信实例一:

程序结构:

socket_server.py

#socket服务端
import socket
server_socket = socket.socket()
#绑定到0.0.0.0 8000端口
server_socket.bind(('0.0.0.0',8000))
server_socket.listen()

#阻塞等待连接
socket,add=server_socket.accept()
print(socket)
print(add)
data=bytes('','utf-8')
while True:
    tmp_data=socket.recv(1024)
    print(tmp_data)
    if tmp_data:
        data+=tmp_data
    else:
        break;
print(data)
socket.close()

socket_client.py

#socket客户端
import socket
client = socket.socket()
client.connect(('localhost', 8000))

#client.send(b'Hello World')
client.send('Hello World'.encode('utf-8'))
client.close()

分别设置server、client程序并行执行

 更改选项,设置并行执行

先执行server,后执行client,执行结果如下,可以看到client已经将数据传到server上了

socket通信实例二:(改了客户端输出)

socket_server.py

#socket服务端
import socket
server_socket = socket.socket()
#绑定到0.0.0.0 8000端口
server_socket.bind(('0.0.0.0',8000))
server_socket.listen()

#阻塞等待连接
socket,add=server_socket.accept()
print(socket)
print(add)
data=bytes('','utf-8')
while True:
    tmp_data=socket.recv(1024)
    print(tmp_data)
    if tmp_data:
        data+=tmp_data
        if tmp_data.decode("utf-8").endswith("#"):
            break
    else:
        break;
print(data)
socket.close()

socket_client.py #号键输出程序结束

#socket客户端
import socket
client = socket.socket()
client.connect(('localhost', 8000))

#当输出完成后,以#号结尾,即为完成
while True:
    data = input()
    client.send(data.encode('utf-8'))
client.close()

 程序运行结果:

socket通信实例三:

socket_server.py

#socket服务端
import socket
import threading

server_socket = socket.socket()
#绑定到0.0.0.0 8000端口
server_socket.bind(('0.0.0.0',8000))
server_socket.listen()

#获取客户端连接并启动线程去处理

def handle_client(server_socket,addr):
    while True:
        tmp_data = socket.recv(1024)
        print(tmp_data.decode("utf-8"))
        input_data=input()
        socket.send(input_data.encode("utf-8"))

while True:
    # 阻塞等待连接
    socket, add = server_socket.accept()

    #启动一个线程去处理新的用户连接
    client_thread=threading.Thread(target=handle_client,args=(socket,add))
    client_thread.start()

socket_client.py

#socket客户端
import socket
client = socket.socket()
client.connect(('localhost', 8000))

#当输出完成后,以#号结尾,即为完成
while True:
    data = input()
    client.send(data.encode('utf-8'))
    server_data = client.recv(1024)
    if server_data:
        if server_data.decode("utf-8").endswith("#"):
            break
    else:
        break;
    print("server response:{}".format(server_data.decode("utf-8")))
client.close()

 程序运行结果:

标签:tmp,Socket,0.0,编程,server,client,data,socket
From: https://www.cnblogs.com/longlyseul/p/18171040

相关文章

  • Django Error: [WinError 10013] An attempt was made to access a socket in a way f
      D:\06softw-dev-202306\manage.pyrunserverWatchingforfilechangeswithStatReloaderPerformingsystemchecks...Systemcheckidentifiednoissues(0silenced).May03,2024-10:02:12Djangoversion3.2.18,usingsettings'MPDB.settings......
  • C语言编程规范——注释
    一、注释简介一般情况下,源程序有效注释量必须在20%以上。注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。二、注释类型1.单行注释将注释放在双斜杠//后面,从双斜杠到行尾都属于注释。#include<stdio.h>intmain......
  • Socket网络编程
    Socket编程为了实现两台不同的机器能够进行通信,所有要使用到网络编程IP地址与端口号IP地址:用于标识网络上主机的位置,每台网络上的设备都有唯一的ip地址。端口号:用于标识主机上的哪个应用程序,一台主机上运行的很多应用程序,该数据是传送给哪个应用程序使用的通过端口号标识。......
  • shell编程
    !/bin/bashset-u-e安全export环境变量cat/porc/$PID/export位置变量$0:表示脚本或命令本身的名称。$1,$2,$3,...:表示第一个、第二个、第三个等参数的值。$*或$@:表示所有位置参数的列表。$#:表示传递给脚本或命令的位置参数的个数。echo$[12^4]=8异......
  • 五个重要的编程原则让你写出高质量代码
    Therearefiveprinciplesthatyoushouldconform.1:Singleresponsibilityprinciple.各司其职,一个对象不要封装的太复杂,设计的时候要考虑好哪些功能属于这个对象,不要将一个对象弄得太复杂,当你意识到一个对象承担了太多责任的时候,尝试分开它,减小耦合度,以便维护。2:Open-Clo......
  • C#的基于.net framework的Dll模块编程(五) - 编程手把手系列文章
          这次继续这个系列的介绍: 一、使用DLL类库的方法;1)静态类;先引用该类库,然后声明命名空间,然后就能够进行使用了。   2)动态类;先引用该类库,然后声明命名空间,然后能够进行使用了。  3)窗体;只能在Winf......
  • [好物推荐] 编程字体推荐
    推荐一些编程中使用的功能性字体1.中英文混合字体写代码的注释更好看,也适用于中文显示乱码的编程环境,如老版本的matlab中YaHei-Consolas-Hybrid.ziphttps://www.lanzoub.com/i648hxiFiraCodePingFang-Retina.ttfhttps://www.lanzoub.com/i6488ja2.窄英文等宽字体适......
  • 史上最全shell脚本编程语法上册
    1.shell脚本语言的基本用法1.1shell脚本的用途将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率;减少手工命令的输入,一定程度上避免人为错误;将软件或应用的安装及配置实现标准化;用于实现日常性的,重复性的,非交互式的运维工作,如:文件打包压缩备份,监控系统运......
  • (中文规格)FPGA - 现场可编程门阵列: XC7S15-1CPGA196I、LCMXO3L-4300C-5BG256C,FS32K142
    1、XC7S15-1CPGA196I  Spartan®-7现场可编程门阵列产品种类:FPGA-现场可编程门阵列系列:XC7S15逻辑元件数量:12800LE自适应逻辑模块-ALM:2000ALM嵌入式内存:360kbit输入/输出端数量:100I/O电源电压-最小:950mV电源电压-最大:1.05V最小工作温度:-40°C最大工作温度:+100°C数......
  • C编程规范
    1、#ifndef宏命名一般只有已经广泛使用的系统库函数和宏才有资格使用_甚至__打头,为的是不与用户定义的名字冲突,所以B.Stroustup在《TheC++ProgrammingLanguage》中告诫我们一般不要使用_或__打头的标志符,这也是一个编程风格的问题吧。//建议用这种#ifndefHEAD_H#......