网络编程

四十二,Java 网络编程浅析

时光怂恿深爱的人放手 提交于 2021-02-19 04:59:12
1. 网络编程的基本概念 网络编程使物理上不在一起的主机进行互联 , 网络连接过程需要使用网络协议 , 常见的通信协议是 TCP,UDP 协议 . TCP: 属于可靠的连接 , 使用三方握手的方式完成连接的确认 . UDP: 属于不可靠的连接 . 对于网络的开发有两种架构 :C/S 和 B/S. 2. 简单 TCP 程序实现 网络开发包所在的类都在 java.net 开发包中 . 此包中可以使用 ServerSocket,Socket 类完成服务器和客户端的开发 . 开发 TCP 程序 , 首先开发服务器端 , 使用 ServerSocket 进行客户端的连接接收 , 每个客户端在程序上都使用 Socket 对象表示 . Server 代码 : package com.ares.demo.helloserver; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class HelloServer { public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket

【网络编程】域名解析

妖精的绣舞 提交于 2020-11-16 01:50:46
项目中有这种场景:C/S通过RPC方式通信。服务端提供一个域名(如:www.xxx.xxx.com),客户端每次请求需要将该域名转换成相应的IP,然后才可以发起请求。这里做一个小小的总结。 #include <stdio.h> #include <unistd.h> #include <netdb.h> #include <arpa/inet.h> #include <errno.h> int main(int argc, char *argv[]) { // 域名解析 char host_name[256] = "www.test.xxx.xxx.com"; // xxx应替换成实际域名 struct hostent *hptr; hptr = gethostbyname(host_name); if(NULL == hptr) { perror("dsn error"); exit(1); } char ip[256] = {0,}; if(NULL == inet_ntop(hptr->h_addrtype, hptr->h_addr, ip, sizeof(ip))) // 项目中一般是这个,首选IP { perror("inet_ntop error."); exit(1); } printf("ip:%s\n", ip); return 0; } 编译并运行: gcc

acl 网络通信与服务器框架库示例列表

假装没事ソ 提交于 2020-05-05 18:06:00
跨平台网络通信及服务器框架库 --- " acl " 项目里有大量的测试及应用示例,主要有三个示例集合,如下: 1、acl/samples:该目录下的例子主要是基于 lib_acl 及 lib_protocol 两个库的例子 - 1.1 acl: 打印当前 acl 库版本号程序 - 1.2 aio/client: 非阻塞 io 客户端 - 1.3 aio/server: 非阻塞 io 服务器 - 1.4 base64: base64 编/解码程序 - 1.5 btree: 二叉树程序 - 1.6 cache: 对象缓存程序 - 1.7 cache2: 对象缓存程序 - 1.8 cgi_env: CGI 程序用来获得 CGI 环境变量 - 1.9 chunk_chain: 二分块数据程序 - 1.10 configure: 配置文件处理程序 - 1.11 connect: 网络客户端连接程序 - 1.12 dbpool: 数据库连接池程序 - 1.13 dlink: 二分块查找算法程序 - 1.14 dns: 域名查询程序 - 1.15 dns_req: 域名查询程序 - 1.16 event: 事件引擎程序 - 1.17 fifo: 先进先出算法程序 - 1.18 file: 文件流处理程序 - 1.19 file_fmt: 将 UNIX 下的 \n 转为 WIN32 下的 \r

网络编程

限于喜欢 提交于 2020-04-07 21:16:35
一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了。 但是当你的a.py和b.py分别在不同电脑上的时候,你要怎么办呢? 类似的机制有计算机网盘,qq等等。我们可以在我们的电脑上和别人聊天,可以在自己的电脑上向网盘中上传、下载内容。这些都是两个程序在通信。 回到顶部 二.软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ 1.C/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2.B/S架构 B/S即:Browser与Server

go语言系列-TCP编程

早过忘川 提交于 2020-04-07 21:14:59
TCP编程 Go的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端,程序必不可少也是至关重要的一部分 网络编程基本介绍 网络编程有两种 TCP socket编程,是网络编程的主流。之所以叫Tcp socket 编程,是因为底层基于Tcp/ip协议的。比如:QQ聊天 b/s结构的http编程,使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是用tcp socket实现的。比如:京东商城【属于go web开发范畴】 计算机间要相互通讯,必须要是用网线、网卡或者无线网卡 协议(tcp/ip) TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的 OSI与TCP/IP参考模型 书籍推荐《tcp/ip协议3卷》 IP地址 每个internet上的主机和路由器都有一个ip地址,它包括网络号和主机号,ip地址有ipv4(32位)或者ipv6(128位)可以ipconfig查看 端口(port)-介绍 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口

Python---------网络编程1

℡╲_俬逩灬. 提交于 2020-04-07 12:19:59
C/S B/S架构** C: client端,客户端 B: Browser,浏览器 S: server 服务端 C/S 客户端与服务器之间的架构: QQ,微信,游戏,App的都属于C/S架构. ​ 优点: 安全性高,个性化设置,功能全面.响应速度快. ​ 缺点: 开发成本高,维护成本高.(基于App),面向的客户固定. B/S 浏览器与服务器之间的架构:它属于C/S架构,最近几年比较流行的特殊的C/S架构. ​ 优点: 开发维护成本低,,面向用户广泛. ​ 缺点: 安全性相对低,响应速度相对慢,个性化的设置单一. 互联网通信的原理 打电话示例: 穿越时空: 80年代初期,固定电话,座机. 一堆物理连接介质将两个部电话连接起来. 拨号. 交流. 那时候没有普通话,河南,山西,广西,广东,福建等等..... 推广了普通话. 与国外一些国家去交流,统一英语. 互联网通信: 一堆物理连接介质将两个部电话连接起来. 拨号. 统一的通信标准. 一揽子协议, 这些互联网协议: 就是一个一个标准,最终就可以通信. osi 七层协议(五层协议) 物理层: 一系列的物理连接介质: 网线,光纤,电缆等等等. 发送的数据就是010101010110比特数据流,这些数据连续不断地收发,010110,拿到010101没有用,你不知道数据代表的意义, 数据要进行分组(按照一定规则), 数据分组这件事物理层做不了

【Unix网络编程】chapter5TCP回射服务器程序

跟風遠走 提交于 2020-04-04 16:34:19
chapter5 5.1 概述 5.2 TCP回射服务器程序:main函数 int main(int argc, char **argv) { int listenfd,connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in, cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_famlily = AF+INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(listenfd, (SA*)&servaddr, sizeof(servaddr)); Listne(listenfd,LISTENQ); for(;;) { client = sizeof(cliaddr); connfd = Accept(listenfd, (SA*)&cliaddr, &client); if( (childpit = Fork()) == 0) { Close(listenfd); str_echo(connfd); exit(0);

Linux 网络编程(UDP)

☆樱花仙子☆ 提交于 2020-04-04 16:28:42
客户端代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/socket.h> #include<sys/types.h> #include<unistd.h> #include<netinet/in.h> #include <errno.h> int main(int argc, char** argv) { int socketfd = 0; struct sockaddr_in server_addr; char recvbuf[1024]; int port = 8001; int nbyte; if((socketfd = socket(AF_INET, SOCK_DGRAM, 0)) == 0){ fprintf(stderr, "socket Error:%s\n\a", strerror(errno)); exit(1); } bzero(&server_addr, sizeof(struct sockaddr_in)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); int

网络编程-TCP连接-readLine

孤者浪人 提交于 2020-04-04 15:22:29
Server: package com.net.tcp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(30000); while(true){ Socket s= ss.accept(); try(BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()))){ String line; while(true){ line=in.readLine(); if(line.equals("end")){ System.out.println("over"); break; }else{ System.out.println(line); } } PrintStream ps =

linux网络编程tcp

天大地大妈咪最大 提交于 2020-04-04 15:20:57
之前学习的时候笔记没有保存好,这次重新编写一个案例。 客户端实现程序代码: #include <string.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <netinet/in.h> #include <arpa/inet.h> #define DEF_TCP_SRV_PORT 19868 int main() { struct sockaddr_in addr; struct sockaddr_in srv_addr; int net_sock; int new_fd; int res; int len; char buff[128]; // 1. socket 初始化 // 1.1 创建socket net_sock = socket(AF_INET,SOCK_STREAM,0); if( -1 == net_sock ) { printf("create socket error!\r\n"); return -1; } // 1.2 初始化地址 bzero( &addr, sizeof(struct sockaddr_in)); addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin