套接字

Python 套接字内置常用方法

天大地大妈咪最大 提交于 2020-02-11 12:18:55
名称 描述 服务器套接字方法 s.bind() 将地址(主机名、端口号对)绑定到套接字上 s.listen() 设置并启动TCP监听器 s.accept() 被动接受TCP客户端连接,一直等待直到连接到达(阻塞) 客户端套接字方法 s.connect() 主动发起TCP服务器连接 s.connect_ex() connect的拓展版本,此时会以错误的形式发挥问题,而不是抛出一个异常 普通的套接字方法 s.recv() 接受TCP消息 s.recv_into() 接收TCP消息到指定的缓冲区 s.send() 发送TCP消息 s.sendall() 完整地发送TCP消息 s.recvfrom() 接收UDP消息 s.recvfrom_into() 接收UDP消息到指定的缓冲区 s.sendto() 发送UDP消息 s.getpeername() 连接到套接字TCP的远程地址 s.getsocketname() 当前套接字地址 s.getsockopt() 返回给定套接字选项的值 s.setsockopt() 设置给定套接字选项的值 s.shutdown() 关闭连接 s.close() 关闭套接字 面向阻塞的套接字方法 s.setblocking() 设置套接字的阻塞或非阻塞模式 s.settimeout() 设置阻塞套接字操作的超时时间 s.gettimeout()

Socket

泪湿孤枕 提交于 2020-02-10 05:37:50
学socket编程的意义   客户端/服务器架构(c/s架构) 硬件c/s架构(打印机) 软件c/s架构         互联网中处处是C/S架构     如某网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)     腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频   C/S架构与socket的关系:      socket就是为了更加便捷的完成C/S架构的开发 OSI七层    一个完整的计算机系统是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的)    如果你要跟别人一起玩,那你就需要上网了,什么是互联网?   互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语。    人们按照分工不同把互联网协议从逻辑上划分了层级:     互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层:          每层常用的物理设备:         为何学习socket一定要先学习互联网协议:         1.首先:本节课程的目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件   2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的   3.然后:网络的核心即一堆协议,协议即标准

python实现一个客户端与服务端的通信

北战南征 提交于 2020-02-09 14:04:14
函数介绍 Socket对象方法: 服务端: 函数 描述 .bind() 绑定地址关键字,AF_INET下以元组的形式表示地址。常用bind((host,port)) .listen() 监听TCP,可以挂起的最大连接数,该值至少为1,一般设为5即可 .accept() 被动接受TCP客户端的连接 客户端: 函数 描述 .connect() 初始化服务器连接 .connect_ex() 是对connect()函数的扩展,当出错时返回出错码,不报异常 其它函数: 函数 描述 .recv() 接收数据,数据以字符串的形式返回,bufsize指定接收的最大数据量。 .send() 发送数据,将string中的数据发送到连接的套接字,返回值是要发送的字节数量,通常使用.encode()函数对数据进行转码 .senddall() 发送完整的数据,在返回之前会尝试发送所有数据,成功返回None,失败则抛出异常。 .recvfrom() 与recv()函数类似,不同的是返回值是(data,address),其中data是包含接收数据的字符串,address是发送数据的套接字地址。 .sendto() 发送UDP数据,将数据发送到套接字,形式是(ipaddr,port)的元组。 .close() 关闭套接字 服务端 使用socket函数来创建一个socket对象,并设置一个socket服务

基于UDP协议的socket套接字编程

坚强是说给别人听的谎言 提交于 2020-02-09 07:26:12
目录 一、UDP套接字简单示例 1.1 服务端 二、客户端 三、UPD套接字无粘包问题 3.1 服务端 3.2 客户端 四、qq聊天 4.1 服务端 4.2 客户端1 4.3 客户端2 4.4 运行结果 一、UDP套接字简单示例 1.1 服务端 import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议-》UDP server.bind(('127.0.0.1', 8080)) while True: data, client_addr = server.recvfrom(1024) print('===>', data, client_addr) server.sendto(data.upper(), client_addr) server.close() 二、客户端 import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议-》UDP while True: msg = input('>>: ').strip() # msg='' client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080)) data, server_addr =

python--网络编程 01 socket常见方法总结

淺唱寂寞╮ 提交于 2020-02-08 13:48:34
服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连接,(阻塞式)等待连接的到来 客户端套接字函数 s.connect() 主动初始化TCP服务器连接 s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数 s.recv() 接收TCP数据 s.send() 发送TCP数据 s.sendall() 发送TCP数据 s.recvfrom() 接收UDP数据 s.sendto() 发送UDP数据 s.getpeername() 连接到当前套接字的远端的地址 s.getsockname() 当前套接字的地址 s.getsockopt() 返回指定套接字的参数 s.setsockopt() 设置指定套接字的参数 s.close() 关闭套接字 面向锁的套接字方法 s.setblocking() 设置套接字的阻塞与非阻塞模式 s.settimeout() 设置阻塞套接字操作的超时时间 s.gettimeout() 得到阻塞套接字操作的超时时间 面向文件的套接字的函数 s.fileno() 套接字的文件描述符 s.makefile() 创建一个与该套接字相关的文件 send和sendall区别 来源: CSDN 作者: 一越王超 链接:

Python TCP接收/发送信息

点点圈 提交于 2020-02-08 05:09:31
一 简单介绍一下几个知识点 TCP : 他是 传输控制协议 是 是一种面向连接的、基于字节流的传输层通信协议 . 这种连接是 一对一 的,因此TCP不适用于广播的应用程序, 基于广播的应用程序请使用UDP协议。 socket : 套接字,是一个模块,我们用它来完成收发信息 网路协议版本 : IPV4 和 ipv6 , 因为后者还没有推广开,所有现在普遍还是用的IPV4版本. ip,和端口 :要给谁发送,就写谁的ip(这里就写自己本地ip就行要是不知道就打开cmd输入ipconfig查看) ; 端口号就随便用一个(除知名端口) encode :就是编码,把字符串转换成字节,因为sendto方法的格式.(反之 decode 就是解码) 二 tcp接收信息(TCP服务器): 因为tcp协议是一对一的连接,所以要先创建一个接收信息的 服务器 简单来说有六个步骤 导入socket模块 创建TCP套接字 绑定ip和port 设置为被动监听模式 最大并发接收的数量是128(设置监听模式才能是服务器) 等待接收链接请求 接收到的是一个元组 (客户端的socket对象包含了:(客户端的地址,端口)) 关闭套接字 下面直接看代码: ↓ (因为ip的问题,测试时把WiFi关掉) # 导包 import socket # 2初始化套接字 tcp_socket = socket . socket (

C#网络编程(基本概念和操作) - Part.1

删除回忆录丶 提交于 2020-02-06 07:14:42
C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助。如果想要更加深入的内容,可以参考相关书籍。 本文是该系列第一篇,主要讲述了基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端;第二篇讲述了一个简单的范例:从客户端传输字符串到服务端,服务端接收并打印字符串,将字符串改为大写,然后再将字符串回发到客户端,客户端最后打印传回的字符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异步传输的方式来完成和第二篇同样的功能;第四篇则演示了如何在客户端与服务端之间收发文件;第五篇实现了一个能够在线聊天并进行文件传输的聊天程序,实际上是对前面知识的一个综合应用。 与本文相关的还有一篇文章是: C#编写简单的聊天程序 ,但这个聊天程序不及本系列中的聊天程序功能强大,实现方式也不相同。 网络编程基本概念 1.面向连接的传输协议:TCP 对于TCP协议我不想说太多东西,这属于大学课程,又涉及计算机科学,而我不是“学院派”,对于这部分内容,我觉得作为开发人员,只需要掌握与程序相关的概念就可以了,不需要做太艰深的研究。

Python实战笔记(二) 网络编程

老子叫甜甜 提交于 2020-02-06 01:09:26
1、Socket Python 提供 socket 模块用于访问网络服务,使得不同主机之间的进程可以相互通信 socket 模块其实就是 Application 和 TCP/IP 的中间层,使得 Application 可以更加方便地使用 TCP/IP 服务 它封装好底层 TCP/IP 复杂的处理逻辑,并向 Application 提供一组方便使用的接口 2、创建 Socket 对象 socket.socket([family[, type[, proto]]]) family:套接字家族,一般取值如下: socket.AF_INET:不同主机上的网络通信,使用 IPV4 协议 socket.AF_INET6:不同主机上的网络通信,使用 IPV6 协议 socket.AF_UNIX:同一主机上的进程通信 type:套接字类型,一般取值如下: socket.SOCK_STREAM:流套接字,用于 TCP 通信 socket.SOCK_DGRAM:数据报套接字,用于 UDP 通信 socket.SOCK_RAW:原始套接字,用于处理 ICMP、IGMP 等特殊的网络报文 proto:协议编号,默认为 0 3、Socket 对象的常用方法 (1)服务端的常用方法 bind(address) :绑定地址到套接字,address 表示通信地址,格式取决于使用的套接字家族 listen

Linux套接字编程

吃可爱长大的小学妹 提交于 2020-02-06 00:46:31
linux 套接字编程 socket # include <sys/socket.h> int socket ( int family , int type , int protocol ) ; 若成功返回非负描述符,出错返回 - 1 family : 协议族 AF_INET type : 套接字类型 SOCK_STREAM protocol : 协议类型常值 0 connect 客户用connect来建立与TCP服务器的连接 # include <sys/socket.h> int connect ( int sockfd , const struct sockaddr * servaddr , socklen_t addrlen ) ; 成功返回 0 ,出错返回 - 1 sockfd : socket返回的套接字描述符 * servaddr : 指向一个套接字地址结构的指针 ( SA * ) & cliaddr addrlen : 套接字大小 sizeof ( cliaddr ) bind 把一个本地协议地址绑定一个套接字 //服务端 # include <sys/socket.h> int bind ( int sockfd , const struct sockaddr * myaddr , socklen_t addrlen ) ; 成功返回 0 ,出错返回 - 1

20175214 《Java程序设计》第11周学习总结

…衆ロ難τιáo~ 提交于 2020-02-05 16:18:33
20175214 《Java程序设计》第11周学习总结 本周学习任务总结 1、根据《java2实用教程》和蓝墨云学习视频学习第十三章; 2、尝试将课本重点内容用自己的话复述手打; 3、输入课本代码并上传码云; 4、使用IDEA调试代码; 教材学习重点内容总结 13.1 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程序称作客户端程序。 一个URL对象通常包含最基本的三部分信息:协议、地址、资源。 13.1.1 URL的构造方法 URL类通常使用如下的构造方法创建一个URL对象: public URL(String spec) throws MalformedURLException public URL(String protocol, String host,String file) throws MalformedURLException 13.1.2 读取URL中的资源 URL对象调用 InputStream openStream() 方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入到客户端。 13.2 InetAdress类 13.2.1 地址的表示 Internet上的主机有两种方式表示地址: 1.域名