套接字

多播

北战南征 提交于 2019-12-06 00:26:53
  IP 多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的 TCP/IP 网络技术。多播是 IPv6 数据包的 3 种基本目的地址类型之一,多播是一点对多点的通信, IPv6 没有采用 IPv4 中的组播术语,而是将广播看成是多播的一个特例。   多播作为一点对多点的通信,数据的收发仅仅在同一分组中进行,是节省网络带宽的有效方法之一。   IP 多播应用大致可以分为三类:点对多点应用,多点对点应用和多点对多点应用。 点对多点应用是指一个发送者,多个接收者的应用形式,这是最常见的多播应用形式。典型的应用包括:媒体广播、媒体推送、信息缓存、事件通知和状态监视等。 多点对点应用是指多个发送者,一个接收者的应用形式。通常是双向请求响应应用,任何一端(多点或点)都有可能发起请求。典型应用包括:资源查找、数据收集、网络竞拍、信息询问等。 多点对多点应用是指多个发送者和多个接收者的应用形式。通常,每个接收者可以接收多个发送者发送的数据,同时,每个发送者可以把数据发送给多个接收者。典型应用包括:多点会议、资源同步、并行处理、协同处理、远程学习、讨论组、分布式交互模拟(DIS)、多人游戏等。 多播地址   IP 多播通信必须依赖于 IP 多播地址,在 IPv4 中它是一个 D 类 IP 地址,范围从 224.0.0.0 到 239.255

unix域套接字

强颜欢笑 提交于 2019-12-05 19:11:50
unix域套接字用于同一台主机上进程之间的通信,与AF_INET套接字相比,AF_LOCAL通信的效率更高: unix域套接字仅仅是复制数据,不执行协议处理 不需要添加或删除网络报头 不计算校验和,不产生序列号 不需要发送确认报文 来源: https://www.cnblogs.com/hshy/p/11940609.html

网络_套接字_java

亡梦爱人 提交于 2019-12-05 17:59:39
1 由于( https://www.cnblogs.com/S-Mustard/p/11924227.html )讲到通过telnet访问百度首页,现在通过java代码来实现访问百度服务,获取首页信息。 try(Socket s=new Socket("www.baidu.com",80); Scanner in =new Scanner(s.getInputStream(),"UTF-8"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));){ StringBuffer sb = new StringBuffer(); sb.append("GET https://www.baidu.com HTTP/1.1\r\n").append("Host:"+ "www.baidu.com" + "\r\n").append("\r\n"); out.write(sb.toString()); out.flush(); while(in.hasNextLine()){ System.out.println(in.nextLine()); } } 来源: https://www.cnblogs.com/S-Mustard/p/11938744.html

ioctl操作

拥有回忆 提交于 2019-12-05 17:52:00
  在本书中有两个地方都对这个函数进行了介绍,其实还有很多地方需要这个函数。ioclt函数传统上一直作为纳西而不适合归入其他精细定义类别的特性的系统接口。网络程序(特别是服务器程序)经常在程序启动执行后使用ioctl获取所在主机全部网络接口的信心,包括:接口地址、是否支持广播、是否支持多播。 #include <unistd.h> int ioctl(int fd,int request,...../* void *arg /); //返回:若成功则为0.失败则我-1 套接字操作 文件操作 接口操作 ARP高速缓存操作 路由表操作 流系统   不但某些ioclt操作和某些fcntl操作功能重叠(譬如把套接字设置为非阻塞),而且某些操作可以使用ioctl以不止一种方式制定(譬如设置套接字的进程组属主)。下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型。 套接字操作   明确要求套接字ioctl请求有三个,它们都要求ioctl的第三个参数是指向某个整数的一个指针。 SIOCATMARK:如果本套接字的读指针当前位于带外标记,那就通过由第三个参数指向的帧数放回一个非0值,否则返回一个0值。 SIOCGPGRP:通过由第三个参数指向的整数返回本套接字的进程ID或进程组ID,该ID指定针对本套接字的SIGIO或SIGURG信号的接受进程。 SIOCSPGR

socket

元气小坏坏 提交于 2019-12-05 15:51:17
socket recv 和 recvfrom udp编程中 socket接受数据用recvfrom tcp中用recv udp 接受端口时recvfrom tcp用accept sk.recv(bufsize[,flag]) 接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量。flag提供有关消息的其他信息,通常可以忽略。 sk.recvfrom(bufsize[.flag])  与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。 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的

C语言实现FTP服务器

微笑、不失礼 提交于 2019-12-05 15:20:26
公共部分代码 /* common.h */ #ifndef COMMON_H #define COMMON_H #include <arpa/inet.h> #include <ctype.h> #include <dirent.h> #include <errno.h> #include <fcntl.h> #include <netdb.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/wait.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #define DEBUG 1 #define MAXSIZE 512 #define CLIENT_PORT_ID 30020 struct command { char arg[255]; char code[5]; }; int socket_create(int port); int socket_accept(int sock_listen); int socket_connect(int port, char *host); int recv_data(int sockfd, char*

python 网络编程

时光总嘲笑我的痴心妄想 提交于 2019-12-05 13:44:18
一、楔子 思考:在不同电脑之间通信如何实现。 二、软件开发架构 1、C/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2、B/S架构 B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。 Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。 三、网络基础 1、一个程序如何找到另一个程序 首先,程序必须要启动,其次,必须有这台机器的地址,我们都知道我们人的地址大概就是国家\省\市\区\街道\楼\门牌号这样字。那么每一台联网的机器在网络上也有自己的地址,它的地址是怎么表示的呢? 就是使用一串数字来表示的,例如:100.4.5.6 ip地址 IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址

网络_套接字_telnet

房东的猫 提交于 2019-12-05 12:13:57
1 如何使用telnet访问百度,并且返回主页信息。 1) 打开cmd,输入 telnet www.baidu.com 80命令 结果如下 点击键盘 ctrl+] 2) 进入telnet命令行,如图 3) 按enter键,退出该界面,返回第一个图片的界面 如此操作的原因是因为输入参数的时候能在界面上正常显示,否则不会正常显示 4) 输入如下字符 GET https://www.baidu.com HTTP/1.1 Host:www.baidu.com 最后按两下enter键,得到如下服务器返回的结果 再这下面继续输入 GET https://www.baidu.com HTTP/1.1 Host:www.baidu.com 就继续访问百度页面 2 telnet与套接字有什么联系? 借鉴的链接为 https://www.cnblogs.com/zhaoxiaojie/p/3613002.html SOCKET则是对TCP/IP的封装和应用(程序员层面上)。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。Socket本身并不是协议 “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。 TCP/IP也要提供可供程序员做网络开发所用的接口

scoket通信之零

走远了吗. 提交于 2019-12-05 07:44:23
TCP/IP网络 计算机网络由一组通过通信信道相互连接的机器(主机和路由器)组成。通过协议(protocol)来达成相互通信程序间的一种 约定 。 TCP、UDP和IP作为协议(约定)的实现,应用程序通过套接字接口对UDP协议和TCP协议提供的服务进行访问。 来源: https://www.cnblogs.com/ZJdiem/p/11914853.html

Unix套接字接口

本小妞迷上赌 提交于 2019-12-05 04:47:00
简介 套接字是操作系统中用于网络通信的重要结构,它是建立在网络体系结构的传输层,用于主机之间数据的发送和接收,像web中使用的http协议便是建立在socket之上的。这一节主要讨论网络套接字。 套接字接口时一组函数,它们和Unix I/O结合起来,用于创建网络应用。许多操作系统都实现了自己的套接字接口。在Unix中,可以将套接字视为一个文件,使用文件I/O函数对套接字进行操作,这也贯彻了Unix中一切皆文件的思想。 既然是网络通信,那么就需要服务端和客户端,一个基本的客户端和服务端的通信模型如下,其中方框里为使用的函数接口: 由于套接字本质上也是一个文件,所以上图中的 recv 和 send 也可以使用文件I/O函数 read 和 write 替代。 套接字地址结构 既然要进行网络通信,那么就要有基本的网络的地址。因特网的套接字地址存放在一个叫 sockaddr_in 的16字节的结构体中,其中的IP地址和端口号都是以网络字节序(大端序)存放的: struct sockaddr_in { uint16_t sin_family; /* 协议类型,总是AF_INET */ uint16_t sin_port; /* 端口号 */ struct in_addr sin_addr; /* IP地址 */ unsigned char sin_zero[8]; /* sizeof