网络编程

java推荐书籍及下载

孤街浪徒 提交于 2020-01-30 00:39:16
前言 一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长。推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的书籍。以下的资料都是免登陆下载,而且都是free的。 如果大家觉得资料好的话,推荐给周围的朋友,让更多的人少走弯路。 入门类 《Thinking in java》 下载地址 在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。这本书的缺点是实在太厚,也比较罗嗦,不适合现代人快节奏学习,因此看这本书要懂得取舍,不是每章每节都值得一看的,挑重点的深入看就可以了。 《Agile Java》中文版 java入门读物, 这本书一大特点是以单元测试和TDD来贯穿全书的,在教你Java各种重要的基础知识的过程中,潜移默化的影响你的编程思维走向敏捷,走向TDD。另外这本书成书很新,以JDK5.0的语法为基础讲解,要学习JDK5.0的新语法也不错。还有这本书对于内容取舍也非常得当,Java语言毕竟类库庞大,可以讲的内容太多,这本书选择的内容以及内容的多寡都很得当,可以让你以最少的时间掌握Java最重要的知识

python网络编程--进程线程

别等时光非礼了梦想. 提交于 2020-01-29 19:08:21
一:什么是进程   一个程序执行时的实例被称为一个进程。   每个进程都提供执行程序所需的资源。 一个进程有一个虚拟地址空间、可执行代码、对系统对象的开放句柄、一个安全上下文、一个独特的进程标识符、环境变量、一个优先级类、最小和最大工作集大小,以及至少一个执行线程。 每个进程以一个线程开始,通常称为主线程,但可以从它的任何线程创建额外的线程。   程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。 二:有了进程为什么还要线程? 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上: 进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。 进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。 一个操作系统就像是一个工厂,工厂里面有很多个生产车间,不同的车间生产不同的产品,每个车间就相当于一个进程,且你的工厂又穷,供电不足,同一时间只能给一个车间供电,为了能让所有车间都能同时生产

2016.12.15网络编程学习笔记

心不动则不痛 提交于 2020-01-29 19:06:06
TCP/IP协议族已经帮我们解决了这个问题, 网络层的“ ip地址 ”可以唯一标识网络中的主机,而 传输层的“ 协议+端口 ”可以唯一标识主机中的应用程序(进程)。利用三元组(ip地址,协议,端口)就可以标识网络的进程。TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字(socket),来实现网络进程之间的通信,网络中进程通信是无处不在,这就是我为什么说“一切皆socket”。socket起源于Unix,而Unix/ Linux 基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作,Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭) 单线程较多线程来说,系统稳定、扩展性极强、软件丰富。多用于点对点的服务。 单线程处理的优点:同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低,如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。 多线程处理可以同时运行多个过程,简单说下多线程开发的益处: 1.多线程开发可以将耗时操作放入子线程,将UI刷新加入主线程,防止页面卡顿。 2.在并发操作时使用多线程,如C/S架构的服务器端并发线程响应用户的请求。 3

Java - 网络编程完全总结

雨燕双飞 提交于 2020-01-29 05:37:33
本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程。 一、概述 二、计算机网络 1.网络协议 2.网络体系结构 三、OSI参考模型 四、TCP/IP参考模型 五、常见网络协议 1.TCP协议 2.UDP协议 3.HTTP协议 六、计网常见问题 七、Java网络编程 一、概述 计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统。网络编程就就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持,通过其提供的接口我们可以很方便地进行网络编程。下面先对网络编程的一些基础知识进行介绍,最后给出使用Java语言进行网络编程的实例。 二、计算机网络 计算机网络20世纪60年代出现,经历了20世纪70年代、80年代和90年代的发展,进入21世纪后,计算机网络已经成为信息社会的基础设施,深入到人类社会的方方面面,与人们的工作、学习和生活息息相关。 网络协议 如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间能够进行相互通信是因为它们都共同遵守一定的规则,即网络协议。 网络体系结构 计算机网络是个复杂的系统,按照人们解决复杂问题的方法

网络编程

梦想的初衷 提交于 2020-01-29 05:06:07
网络编程和套接字 网络编程:两台连网的计算机相互交换数据。 套接字:完成数据传输。 请求套接字创建过程 1.调用socket函数(安装电话机)创建套接字(接电话需要准备什么-安装电话机) 2.调用bind函数分配IP地址和端口(分配电话号码) 3.调用LIsten函数转为可接受请求状态(连接电话线) 4.调用accept函数受理请求的连接(接听电话) 打电话套接字 1.调用socket函数创建套接字 2.调用connect函数向服务器发送连接请求 面向连接的套接字 特点:1.传输过程中数据不会消失 2.按序传输数据 3.传输数据不存在边界 列如:两位工人在一条传输带中传递物品,只要传输带本身没有问题,就能保证数据不会丢失。同时较晚的数据不会先到达,传送带保证了数据的按顺序排列。 这种情况适于write和read函数:传输数据的计算机通过三次调用write函数传递了100字节的数据,但接受数据的计算机仅通过一次read函数调用了100个字节。 套接字的缓冲区read函数读取速度比接受数据的速度慢,则缓冲区可能被填满,此时套接字无法在接受数据,但不会发生数据丢失,套接字将停止传输。 面向消息的套接字 特点:1.强调快速传输而非传输顺序 2.传输的数据可能丢失也可能损失 3.传输的数据有数据边界 4.限制每次传输的数据大小 比如:用摩托车发往同一目的地的2件包裹无需保证顺序

重温网络编程——常识(三)

自作多情 提交于 2020-01-29 02:03:20
前言 关于一些网络编程的常识整理。 正文 1.网络数据传输到我们的计算机,是如何知道传输给那个应用? 通过端口,所以端口也是不能重复占用的。 下面是sockaddr_in 的定义: typedef struct sockaddr_in { #if(_WIN32_WINNT < 0x0600) short sin_family; #else //(_WIN32_WINNT < 0x0600) ADDRESS_FAMILY sin_family; #endif //(_WIN32_WINNT < 0x0600) USHORT sin_port; IN_ADDR sin_addr; CHAR sin_zero[8]; } SOCKADDR_IN, *PSOCKADDR_IN; 1.sin_family 设置的为地址族 2.sin_port 为端口号,16位也就是两个字节,所以端口范围是1-65535,其中1-1000是系统保留的端口号,但是并不是我们不能用,只是最后不用。 1024-5000: BSD临时端口,一般的应用程序使用1024到4999来进行通讯; 5001-65535: BSD服务器(非特权)端口,用来给用户自定义端口. ip 地址的定义 typedef struct in_addr { union { struct { UCHAR s_b1,s_b2,s_b3,s_b4;

【Java基础】网络编程-URL类

无人久伴 提交于 2020-01-29 01:07:20
文章目录 什么是URL URL语法 URL类 构造方法 常用方法 发起请求 URLConnection类 常用方法 读取服务器 向服务器写入数据 获取首部 配置首部 配置连接 设置响应超时时间 使用URLConnection与服务器交互 获取内容 URLConnection的安全 ContentHandlerFactory HttpURLConnection 猜测MIME内容类型 设置获取请求类型 断开与服务器的连接 获取错误响应 Http响应码 重定向 代理 流模式 URL和URLConnection区别 使用HttpURLConnection进去get/post请求 什么是URL URL(Uniform Resource Locator)中文名为 统一资源定位符 ,有时也被俗称为 网页地址 。表示为互联网上的资源,如网页或者FTP地址。 URL语法 protocol://host:port/path?query#fragment protocol(协议)位置处 可以是 HTTP、HTTPS、FTP 和 File,port 为端口号,path为文件路径及文件名 解析 http://www.baidu.com/index.html?language=cn#j2se 协议为( protocol ):http 主机为( host ):www.runoob.com 端口号为( port

Java网络编程Socket通信

三世轮回 提交于 2020-01-28 10:43:02
TCP(Transmission Control Protocol 传输控制协议 )是一种面向连接的、可靠的、基于字节流的传输层通信协议 UDP (User Datagram Protocol 用户数据报协议)是OSI(Open System Interconnection开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务 TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 一、Tcp协议通信 1、Server服务器端: a、创建ServerSocket对象,同时绑定监听端口 b、通过accept()方法监听客户端的请求 c、建立连接后,通过输入流读取客户端发送的请求信息 d、通过输出流向客户端发送响应信息 e、关闭相应资源 package com.yyx.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import

java简单聊天 网络编程

ぐ巨炮叔叔 提交于 2020-01-28 08:35:42
demo1(单线程简单通讯)io流 服务端 public class Server { public static void main(String[] args) throws Exception { //5.创建ServerSocket、Socket、OutputStream、InputStream以及端口号并初始化 ServerSocket serverSocket = null; boolean flag = true; Socket socket = null; OutputStream out = null; InputStream in = null; try { //6.开启服务器并接收客户端发送的数据 serverSocket = new ServerSocket(8000);//创建服务器套接字 System.out.println("服务器开启,等待连接..."); socket = serverSocket.accept();//获得连接 //接收客户端发送的内容 in = socket.getInputStream(); //7.使用输出流对象将信息返回给客户端 out = socket.getOutputStream(); System.out.println(socket.getInetAddress().getHostAddress() + "--

java学习之网络编程

最后都变了- 提交于 2020-01-27 20:19:01
文章目录 TCP通信程序 概述 Socket类 构造方法 成员方法 简单的TCP网络程序 TCP通信分析图解 客户端向服务器发送数据 服务器向客户端回写数据 综合案例 文件上传案例 文件上传分析图解 基本实现 文件上传优化分析 优化实现 模拟B\S服务器(扩展知识点) 案例分析 案例实现 访问效果 TCP通信程序 概述 TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。 两端通信时步骤: 服务端程序,需要事先启动,等待客户端的连接。 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。 在Java中,提供了两个类用于实现TCP通信程序: 客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。 服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端的连接。 Socket类 Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。 构造方法 public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指定的host是null ,则相当于指定地址为回送地址。