网络编程

Java高并发网络编程(二)BIO

做~自己de王妃 提交于 2019-12-23 13:09:11
一、阻塞 服务器端 public class BIOServer { public static void main(String[] args) throws Exception { ServerSocket sc = new ServerSocket(9093); System.out.println("服务器启动成功!"); while (!sc.isClosed()) { Socket request = sc.accept(); // 阻塞 System.out.println("收到新连接:" + request.toString()); try { InputStream is = request.getInputStream(); // net+i/o BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); String msg; while ((msg = reader.readLine()) != null) { // 没有数据会阻塞 if (msg.length() == 0) { break; } System.out.println(msg); } System.out.println("收到数据,来自:" + request.toString());

python之网络编程(socket)

≡放荡痞女 提交于 2019-12-23 13:02:27
目录 一、socket介绍 二、方法说明 三、实例 四、粘包 五、socketserver实现并发 一、socket介绍 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭) socket和file的区别: file模块是针对某个指定文件进行【打开】【读写】【关闭】 socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】 二、方法说明 import socket socket.socket(socket_family,socket_type,protocal=0) socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。protocol 一般不填,默认值为 0。 获取tcp/ip套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 获取udp

python 网络编程

[亡魂溺海] 提交于 2019-12-23 10:49:35
什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以无需深入理解tcp/udp协议,因为socket已经封装好了,使用者只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 ps:ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序,ip地址是配置到网卡上的,而port是应用程序开启的,ip与port的绑定就标识了互联网中独一无二的一个应用程序 套接字分类 基于文件类型的套接字家族:AF_UNIX unix一切皆文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信 基于网络类型的套接字家族:AF_INET (还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET。 套接字工作流程

QT之TCP网络编程

夙愿已清 提交于 2019-12-23 04:50:19
本文参考 Qt学习之路七——TCP/IP网络编程 以前的文章中写了 c++之网络编程 以及 c++之网络编程–文件传输 本文就在QT基础上来实现TCP编程,两者实现步骤相似,但使用QT实现更加简单。 值得注意的是: 服务器有两个套接字(监听套接字(tcpServer)和通信套接字(tcpSocket)) 客户端只有一个通信套接字(tcpSocket) 服务器和客户端通信的基本步骤: 1、QTcpServer对象负责监听是否有客户端连接此服务器。它是通过这样一个函数监听的 tcpserver - > listen ( QHostAddress :: Any , 8888 ) ; 它的第一个参数表示服务器监听的地址,如果后面是Any表示监听本机的所有网口的,第二个参数表示监听的网络端口。 2、如果服务器监听到有客户端和它进行连接,服务器就会触发newConnection这个信号。同时客户端一旦和服务器连接成功,客户端会触发connected这个信号,表示已经成功和服务器连接。 3、在两者建立好连接之后,服务器需要返回一个QTcpSocket对象来和客户端进行通信,通常通过这个函数来返回一个建立好连接的套接字。 tcpsocket = tcpserver - > nextPendingConnection ( ) ; 4、接着就可以通过这个通信套接字来完成通信。当一端发送成功之后

linux网络编程之bind函数

与世无争的帅哥 提交于 2019-12-23 03:45:49
NAME bind - bind a name to a socket SYNOPSIS #include <sys/socket.h> int bind(int socket, const struct sockaddr *address, socklen_t address_len); DESCRIPTION The bind() function shall assign a local socket address address to a socket identified by descriptor socket that has no local socket address assigned. Sockets created with the socket() function are initially unnamed; they are identified only by their address family. The bind() function takes the following arguments: socket Specifies the file descriptor of the socket to be bound. address Points to a sockaddr structure containing the

【网络编程二】网络通信常用的函数总结

旧城冷巷雨未停 提交于 2019-12-23 03:45:04
1、函数socket 函数原型: i nt s ocket(int domain, int type, int protocol) ; 参数说明: domain :协议域,又称协议族(family)。常用的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域Socket)等。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。 type :指定Socket类型。常用的socket类型有SOCK_STREAM、SOCK_DGRAM等。流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用。数据报式Socket(SOCK_DGRAM)是一种无连接的Socket,对应于无连接的UDP服务应用。 protocol :指定协议。常用协议有IPPROTO_TCP、IPPROTO_UDP等,分别对应TCP传输协议、UDP传输协议。 注意:type和protocol不可以随意组合,如SOCK_STREAM不可以跟IPPROTO_UDP组合。当第三个参数为0时,会自动选择第二个参数类型对应的默认协议。 返回值: 如果调用 成功就返回新创建的套接字的描述符 ,如果 失败

UNIX网络编程之套接字API

南笙酒味 提交于 2019-12-23 03:44:47
套接字相关函数 int socket(int family, int type, int protocol); 该接口创建一个套接字 family指定协议族(通常是AF_INET);type参数指定socket的类型:SOCK_STREAM、SOCK_DGRAM、SOCK_RAW;protocol通常赋值"0"。 int bind(int sockfd, struct sockaddr *my_addr, int addrlen); 将套接字绑定到IP地址和端口 struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; 一个绑定的实例: struct sockaddr_in saddr; memset((void *)&saddr,0,sizeof(saddr)); saddr.sin_family = AF_INET; saddr.sin_port = htons(8888);端口号要大于1024 saddr.sin_addr.s_addr = htonl(INADDR_ANY); 绑定到本地IP //saddr.sin_addr.s_addr = inet_addr("192.168.22.5"); 绑定固定IP bind

网络编程之select头文件

▼魔方 西西 提交于 2019-12-23 03:43:43
#include "ccnet.h" #include <sys/time.h> #include <sys/timeb.h> #include <sys/stat.h> #include <sys/param.h> #include <sys/types.h> #include <sys/shm.h> #include <sys/sem.h> #include <sys/ipc.h> #include <sys/wait.h> #include <signal.h> #include <pthread.h> #include <signal.h> #include <errno.h> #include <limits.h> #include <fcntl.h> //连接服务器 static int Connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) { assert(serv_addr != NULL); return connect(sockfd, serv_addr, addrlen); } //关闭服务器 int Close(int fd) {   return close(fd); } //连接服务器 // 入参数:IP, port,timeout int CCConnectO

TCP 网络编程

佐手、 提交于 2019-12-23 03:43:29
TCP通信 (一) tcp实验 ip 用途,唯一识别机器 port 用来绑定程序,即端口用来识别程序 服务端 //1.创建socket #include <sys/types.h> //常用类型 #include <sys/socket.h> //socket函数等 int socket(int domain, int type, int pro-tocol); 返回值,是设备的描述符 失败返回 -1 参数: domain: AF_INET 当前使用的 type: 协议类型 套接字类型 TCP 文件 SOCK_STREAM 流式套接字 UDP qq SOCK_DGRAM 数据报 ICMP ping SOCK_RAM 原始套接字 pro-tocol 协义簇类型 0 符合协议簇和套接字类型的默认协议 通常设为0 //3.启动侦听 int listen(int sockfd, int backlog); 参数:sockfd: 服务端套接字描述符 socket返回的值 backlog: 指定排队等待接受连接的最大值 系统最大值SOMAXCONN 返回值:0成功 -1失败 //4.接受连接请求 int accept(int sockfd,struct sockaddr *addr, size_t *addrlen); 参数:sockfd: 服务端套接字描述符 addr:

Socket网络编程总结

拜拜、爱过 提交于 2019-12-23 03:43:14
1.sockaddr结构体   sockaddr结构体包含了网络地址和端口的一些数据。以下三个函数实现了字符串转sockaddr结构体的功能。 1 int inet_aton(const char *strptr, struct in_addr *addrptr); 2 in_addr_t inet_addr(const char *strptr); 3 int inet_pton(int family, const char *strptr, void *addrptr);   in_addr转字符串的函数: 1 char *inet_ntoa(struct in_addr inaddr); 2 const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len); 2.连接时的相关函数,首先是server端   int sockfd(int family, int type, int protocol)   family是指明是IPV4还是IPV6的参数,平常我们用的IPV4是AF_INET。type是指的是面向连接还是数据包的选项,分别是SOCK_STREAM以及SOCK_DGRAM。protocal是协议名,一般默认为0即可。   int bind(int sockfd, const