recv

Python Socket - Send/Receive messages at the same time

吃可爱长大的小学妹 提交于 2020-04-10 03:28:25
问题 Basically I have been working on a simple chat room using socket and thread. In my client I can receive and send messages, my issue is that one comes before another in a loop, so if I am sending a message I will only receive data once I have sent a message. I want it to work like any other chat room, where I could receive a message when I am sending a message, any help will help greatly. This is my basic client: import socket import sys ########### HOST = '25.0.18.52' PORT = 9999 ###########

Python Socket - Send/Receive messages at the same time

℡╲_俬逩灬. 提交于 2020-04-10 03:25:48
问题 Basically I have been working on a simple chat room using socket and thread. In my client I can receive and send messages, my issue is that one comes before another in a loop, so if I am sending a message I will only receive data once I have sent a message. I want it to work like any other chat room, where I could receive a message when I am sending a message, any help will help greatly. This is my basic client: import socket import sys ########### HOST = '25.0.18.52' PORT = 9999 ###########

网络基础:socket模块

﹥>﹥吖頭↗ 提交于 2020-04-01 05:36:21
socket:   套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 基于TCP协议的socket:tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 socket参数详解: socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 创建socket对象的参数说明: family 地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。 (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。 SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。 SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。 proto 协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。 fileno

GNU/Linux应用程序开发学习笔记(三)套接字编程

南笙酒味 提交于 2020-03-30 06:19:54
套接字编程的各级要素: `主机接口:网络地址ip `协议:特定的协议(TCP & UDP) `端口:client或server的进程终点 套接字 简单的说,套接字就是两个应用程序之间通信管道的终点,这个管道可以唯一的标志一条链接,而应用程序则通过套接字来操作这个管道通信。 通信过程 要想使不同主机的进程通信,就必须使用套接字,套接字是用socket()函数创建,如果需要C/S模式,则需要把server的套接字与地址和端口绑定起来,使用bind(),当上述操作完成后,便可使用listen()来监听这个端口,如果有其他程序来connect,那么server将会调用accept()来接受这个申请并为其服务。client是调用connect()来建立与server之间的连接,这时会使用传说中的三次握手来建立一条数据链接。当连接被建立后,server与client便可以通信了,通信可以使用read()/write(),send()/recv(),sendto()/recvfrom()等一些函数来实现,但是不同的函数作用和使用位置是不同的。当数据传送完后,可以调用close()来关闭server与client之间的链接。上述过程就是不同主机之间进程通信的大致过程,当然这只是一个概要,其中的细节还是很多的。 创建和清除套接字 创建套接字的原型如下 int socket(int domain,

python学习Day33--SocketServer

我与影子孤独终老i 提交于 2020-03-23 17:22:03
一、回顾(需要记住的) 1、架构:   C/S架构:充分发挥PC机性能   B/S架构:统一了应用的接口,隶属于C/S架构 2、物理地址:mac,全球唯一,类似于一个身份证 3、IP地址:四位点分十进制 4、arp协议:通过目标的IP地址,获取目标mac地址 5、OSI五层模型:   应用层 http, https, ftp, py文件   传输层 tcp/udp协议   网络层 ip协议   数据链路层 arp协议   物理层 传输电信号 6、交换机的通信方式:   单播:点对点   组播:点对多(一组,不是指所有)   广播:向多个PC端发送数据包 7、交换机的功能:   组成局域网,经过内部处理解析数据,将数据以点对点,点对多的方式发送给目标 8、路由器的功能:   跨网段的数据传输,路由出网络传输的最佳路径。 9、TCP协议:面向连接的,面向字节流传输,可靠   UDP协议:无连接,面向数据包,不可靠,传输速度快 10、TCP与UDP协议的区别:   TCP有三次握手,四次挥手   (1)三次握手:第一次的请求一定是客服端先发起     客服端向服务器发送一个连接请求;     客服端回复一个确认接收到请求,并要求连接客服端;     客服端回复服务器一个确认连接的消息,   (2)四次挥手:谁先发起都可以     客服端先发送一个断开连接的请求;    

HTTP/2探索第二篇——工具及应用

懵懂的女人 提交于 2020-03-17 23:10:30
某厂面试归来,发现自己落伍了!>>> 版权声明:本文由张浩然原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/88 来源:腾云阁 https://www.qcloud.com/community 由于不同环境过于复杂,本文仅基于Mac OS和Linux来讲解工具及应用。 一.HTTP/2环境搭建所需软件概览 本文需要安装的软件为(Mac用户请使用 homebrew 来安装,括号里都是Mac的安装方式) curl (brew install nghttp2 —with-nghttp2) Linux安装 wget https://curl.haxx.se/download/curl-7.48.0.tar.gz tar xvf curl-7.48.0.tar.gz && cd curl-7.48.0 然后输入以下命令,exit一次再进入然后版本是7.48就成功了: $ ./configure --with-nghttp2=/usr/local --with-ssl $ make $ sudo make install $ ldconfig $ usr/local/bin/curl -V nghttp2 (brew install nghttp2) 安装网址 sudo apt-get install g++

TCP和UDP的比较(包含“三次握手,四次挥手”)

允我心安 提交于 2020-03-17 11:12:36
接TCP和UDP编程流程一节 写在前面:这里关于TCP的“三次握手和四次挥手“”描述的不是非常清楚,详细的见后文哦~ TCP和UDP的区别 TCP是面向连接的,可靠的,字节流服务 UDP是无连接,不可靠的,数据报服务 如图(3-1)所示: 1.发送方的send的次数和recv接收方的次数是不对等的; 2.发送方send的次数与底层封装的TCP报文段的个数不对等; 3.接收方如果一次recv未将TCP接收缓冲区中的数据读完,后续的recv会接着读取。 如图(3-2)所示: 1.sendto和recvfrom的次数是相等的; 2.sendto与底层UDP数据报的个数是相等的; 3.一次recvfrom如果没有将一个UDP报文段中的数据读完,则剩余的数据会被丢弃。 ————————————————————————————————————————————— TCP的面向连接 三次握手: 思考:为什么是三次握手?? 四次挥手: 思考:为什么要四次握手?? —————————————————————————————————— TCP的可靠性传输保证: UDP协议 来源: CSDN 作者: 飞流直下 链接: https://blog.csdn.net/weixin_44737923/article/details/103328365

Python 不可不知的 Socket 通信

橙三吉。 提交于 2020-03-17 02:06:02
原文地址: https://www.zhblog.net/go/python/advanced/python-socket-selectors?t=563 Socket API 是用来通过网络传递信息的,也为进程间通信提供一种形式。 最常见的 socket 程序就是 client-server 应用程序,下面在同一主机上进程之间进行通信。 首先,了解 socket 的 server 端和 client 端 api。 Socket API Python 的 socket 模块提供了 socket api 的接口。 主要的方法: socket() bind() listen() accept() connect() connect_ex() send() recv() close() python 提供了直接映射到操作系统的 api(底层C),保证了方便与一致性。 TCP Socket 使用 socket.socket() 创建一个 socket 对象,并指定 socket 类型为 socket.SOCK_STREAM,这就默认我们使用的协议为 TCP,在通常情况下,这就是我们想要使用的。 TCP 协议优点: 可靠性:发送者会检测网络传输中是否丢包,并重发在网络中丢掉的数据包。 顺序发送:数据被读取时保证数据是发送者写的顺序。 另外,UDP socket 可以指定为 socket

python中的pika模块

心不动则不痛 提交于 2020-03-11 10:59:02
工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经中间碰到一些问题 的解决方法 刚开写代码的小菜鸟 在最开始使用这个rabbitmq的时候,因为本身业务需求,我的程序既需要从rabbitmq消费消息,也需要给rabbitmq发布消息,代码的逻辑图为如下: 下面是我的模拟代码: #! /usr/bin/env python3 # .-*- coding:utf-8 .-*- import pika import time import threading import os import json import datetime from multiprocessing import Process # rabbitmq 配置信息 MQ_CONFIG = { "host": "192.168.90.11", "port": 5672, "vhost": "/", "user": "guest", "passwd": "guest", "exchange": "ex_change", "serverid": "eslservice", "serverid2": "airservice" } class RabbitMQServer

python之socket编程(一)

元气小坏坏 提交于 2020-03-07 12:50:23
socket之前我们先来熟悉回忆几个知识点。 OSI七层模型 OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。(from百度) TCP/IP四层参考模型 由于OSI七层较为庞大,所以由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。 以下图片TCP/IP四层与OSI七层的区别,是百度上找的图片,大家迁就看: 他们的对应网络协议如下: 今天我们说的socket就在传输层。 TCP/IP三次握手建立连接 TCP/IP四次挥手关闭连接 接着我们来看下在TCP/IP四层中数据之间的一些关系吧: TCP/IP解释 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,定义了电子设备如何连入因特网,以及数据如何在它们之间 传输的标准。 python中socket编程 上面一balabala一堆废话,无非想引出来socket这个东西,那么这个socket是个什么鬼呢?socket是TCP/IP中传输层中TCP、UDP的实现方式,用socket编程,可以实现TCP UDP的通信