小学网站建设方案书,武隆集团网站建设,苏宁网站建设,无流量地图导航下载网络编程入门 网络编程概述
计算机网络
计算机网络是指地理位置不同的具有独立功能的计算机及其外部设备#xff0c;通过通信线路连接起来#xff0c;在网络操作系统#xff0c;网络管理软件及网络通信协议的管理协调下#xff0c;实现资源共享和信息传递的计算机系统…网络编程入门 网络编程概述
计算机网络
计算机网络是指地理位置不同的具有独立功能的计算机及其外部设备通过通信线路连接起来在网络操作系统网络管理软件及网络通信协议的管理协调下实现资源共享和信息传递的计算机系统。
客户端和服务器通过互联网连接起来实现资源共享和信息传递
网络编程
网络编程
在网络通信协议下实现网络互联的不同计算机上运行的程序间可以进行数据交换。
网络编程的三要素
IP地址
要想让网络中的计算机能够相互通信必须为每台计算机指定一个标识号通过这个标识号来指定接受数据的计算机和识别发送的计算机IP地址就是标识号也就是设备的标识。
端口端口号是可以唯一表示设备中的应用程序
协议通过计算机网可以使多台计算机实现连接位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则。在计算机网络中这些连接和通信的规则被称为网络通信协议他对数据的传输格式传输速率传输步骤等做了统一规定通信双方必须同时遵守才能完成数据交换常见的协议有UDP协议和TCP协议。
IP地址
网络中设备的唯一标识
IP地址分两大类 IPv4 是给每个连接在网络上的主机分配一个32bit的地址按照TCP/IP规定ip地址用二进制来表示是每个地址 长32bit也就是四个字节.为了使用方便IP地址常被写成十进制的形式中间有都好分割不同的字节这种表示方法叫做点分十进制表示法。 IPv6 由于互联网发展IP地址需求量增大网络地址数量有限为了扩大地址空间通过IPv6重新定义地址空间采用128位的地址长度每16个字节一组分成8组十六进制数这样就解决了网络地址资源数量不够的问题
常用命令
ipconfig:查看本机IP地址
ping ip地址检查网络是否连通
特殊的IP地址
127.0.0.1是霍总地址可以代表本机地址一般用来测试
InetAddress的使用
InetAddress表示Internet协议IP地址
使用方式代码如下 public static void main(String[] args) throws UnknownHostException {InetAddress address InetAddress.getByName(192.168.137.1);//获取IP地址的主机名String name address.getHostName();//返回文本显示的IP地址字符串String hostAddress address.getHostAddress();System.out.println(主机名name);System.out.println(ip地址hostAddress);}端口
端口设备上应用程序的唯一标识
端口号用两个字节表示的整数他的取值范围是065535.其中01023之间的端口号用于一些知名
网络服务和应用普通应用程序需要使用1024以上的端口号。如果端口号被另一个服务或应用占用。会导致当前程序启动失败。
协议
协议计算机网络中连接和通信的规则被称为网络通信协议
UDP协议 用户数据报协议User Datagram Protocol UDP是无连接通信协议即在数据传输时数据的发送端和接收端不建立逻辑连接。简单来说当一台计算机向另一台计算机发送数据时发送端不会去确认接收端是否存在就会发送出数据同样接受端在接受到数据是也不会向发送端反馈是否收到数据 由于使用UDP协议消耗较小通信效率高所以通常会用于音频视频和普通数据的传输。 例如视频会议一般采用UDP协议因为这种情况即使偶尔丢失一两个数据包。也不会对数据结果产生影响。但是在使用UDP协议传输数据时由于UDP协议的面向无连接性不能保证数据的完整性因此在传输重要数据时不建议使用UDP协议。
TCP协议
传输控制协议Transmission Control ProtocolTCP协议是面向连接的协议即传输数据之前在发送端和接收端建立逻辑联系然后再传输数据。它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器由客户端向服务端发出连接请求每次连接的创建都需要经过三次握手。三次握手TCP协议中在发送数据的准备阶段客户端与服务器之间的三次交互以保证连接的可靠性。 第一次握手客户端向服务器端发出连接请求等待服务器确认。第二次握手服务器端向客户端会送一个响应 通知客户端收到了连接请求第三次握手客户端再次向服务器端发送确认信息确认连接 完成 三次握手建立连接后客户端和服务器端可以开始进行数据传输了。由于这种面向连接的特性TCP协议可以保证传输数据的安全性所以应用十分广泛例如上传文件下载文件浏览网页等。
UDP通信程序
UDP通信原理
UDP协议是一种不可靠的网络协议,它在网络的两端个简历一个Socket对象.但是这两个Socket只是发送,接受数据的对象.因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念.
Java 提供了DatagramSocket类作为基于UDP协议的Socket.
UDP发送数据
发送数据的步骤
创建发送端的Socket对象(DatagramSocket)创建数据并把数据打包调用DatagramSocket对象发送数据关闭发送端 public static void main(String[] args) throws IOException {//创建Socket对象DatagramSocket dsnew DatagramSocket();//创建数据并把数据打包//DatagramPacket(byte[] buf, int length, InetAddress address,// int port) 构造一个数据包// 发送长度为 length的数据包到指定主机上的指定端口号。byte[] bys超级喜欢菲菲.getBytes();int lengthbys.length;InetAddress inetAddress InetAddress.getByName(192.168.37.1);int port10087;DatagramPacket dpnew DatagramPacket(bys,length,inetAddress,port);//调用DatagramSocket对象的方法发送数据//void send(DatagramPacket p) 从此套接字发送数据报包。ds.send(dp);//关闭发送端//void close() 关闭此数据报套接字。ds.close();}UDP接收数据
UDP接收数据的步骤
创建接收数据端DatagramSocket对象创建一个数据包,用于接收数据调用DatagramSocket对象的方法接收数据解析数据包,并把数据在控制台上显示关闭接收端
TCP通信程序
TCP通信协议是一种可靠的网络协议他在通信的两端个简历一个Socket对象从而在通信的两端形成虚拟链路。
一旦建立了虚拟的网络链路两端的程序就可以通过虚拟的链路进行通信。
Java对基于TCP协议的网络提供了良好的封装使用Socket对象来代表连段的通信端口并通过Socket产生的IO流来进行网络通信
Java为客户端童工了Socket类为服务提供了ServerSocket类
TCP发送数据
发送数据步骤
创建客户端的Socket对象获取输出流写数据释放资源 public static void main(String[] args) throws IOException {//创建客户端的Socket对象//Socket()InetAddress address.int port)创建流套接字并将其链接到指定的IP地址的指定端口号//Socket snew Socket(InetAddress.getByName(192.168.43.240),10001);Socket snew Socket(192.168.43.1,10086);//获取数据流写数据OutputStream os s.getOutputStream();os.write(Mulujet.getBytes());//释放资源s.close();}TCP接收数据
接受数据的步骤 创建服务器端的Socket对象 监听客户端连接并返回一个Socket对象 获取输入流读数据并把数据显示在控制台 释放资源 public static void main(String[] args) throws IOException {//创建服务区端Socket对象ServerSocket ssnew ServerSocket(10086);//监听发送端Socket s ss.accept();//读数据并显示在控制台InputStream is s.getInputStream();byte [] bysnew byte[1024];int lenis.read(bys);String datanew String(bys,0,len);System.out.println(数据是data);//释放资源s.close();ss.close();}TCP通信程序的练习
package practise1.Demo5;import java.io.*;
import java.net.Socket;public class ServerThread implements Runnable {private Socket s;int count0;public ServerThread(Socket s) {this.ss;}Overridepublic void run() {//接收数据写道文本文件try {BufferedReader brnew BufferedReader(new InputStreamReader(s.getInputStream()));//BufferedWriter bwnew BufferedWriter(new FileWriter(file));File filenew File(E:\\Java\\IP\\src\\practise1\\Demo5\\123[count].java);while(file.exists()){count;filenew File(E:\\Java\\IP\\src\\practise1\\Demo5\\123[count].java);}BufferedWriter bwnew BufferedWriter(new FileWriter(file));String line;while((linebr.readLine())!null){bw.write(line);bw.newLine();bw.flush();}//给出反馈BufferedWriter bwServernew BufferedWriter(new OutputStreamWriter(s.getOutputStream()));bwServer.write(文件上传成功);bwServer.newLine();bwServer.flush();s.close();} catch (IOException e) {throw new RuntimeException(e);}}
}package practise1.Demo5;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {ServerSocket ssnew ServerSocket(10098);while(true){//监听客户端连接Socket s ss.accept();//为每一个客户端开启一个线程new Thread(new ServerThread(s)).start();}}
}package practise1.Demo5;import java.io.*;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket snew Socket(192.168.137.1,10098);String fileE:\\Java\\IP\\src\\practise1\\UDPReceiveDemo.java;//封装文本文件数据BufferedReader brnew BufferedReader(new FileReader(file));//封装输出流写数据BufferedWriter bwnew BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line;while ((linebr.readLine())!null){bw.write(line);bw.newLine();bw.flush();}s.shutdownOutput();//接收反馈BufferedReader brClientnew BufferedReader(new InputStreamReader(s.getInputStream()));String databrClient.readLine();System.out.println(服务器的反馈data);//释放资源br.close();s.close();}
}
连接三次握手
取消连接四次挥手
服务器端的优化
用循环优化UUID 不可变的通用唯一标识符的类线程线程池
package practise2.ThreadPool;import java.io.*;
import java.net.Socket;//将本地文件上传到服务器接收服务器的反馈
public class Client {public static void main(String[] args) throws IOException {Socket socketnew Socket(172.18.45.241,10098);//是本地的流用来读取本地文件的BufferedInputStream bisnew BufferedInputStream(new FileInputStream(C:\\Users\\QQ363\\Desktop\\1.jpg));//写到服务器中要用网络的流OutputStream os socket.getOutputStream();//包装提高效率BufferedOutputStream bosnew BufferedOutputStream(os);int b;while ((bbis.read())!-1){bos.write(b);//通过网络写到服务器中}//给服务器一个结束标识文件已经传输socket.shutdownOutput();//接受反馈BufferedReader brnew BufferedReader(new InputStreamReader(socket.getInputStream()));String line;while((linebr.readLine())!null){System.out.println(line);}socket.close();bis.close();socket.close();}
}package practise2.ThreadPool;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;//接收客户端上传的问价你上传完毕之后给出反馈
public class Server {public static void main(String[] args) throws IOException {ServerSocket ssnew ServerSocket(10098);//创建线程池ThreadPoolExecutor poolnew ThreadPoolExecutor(3, //核心线程数量10,//线程池的总数量60,//临时线程空闲时间TimeUnit.SECONDS,//单位new ArrayBlockingQueue(5),//阻塞队列Executors.defaultThreadFactory(),//创建线程的方式new ThreadPoolExecutor.AbortPolicy()//任务拒绝策略);while(true) {Socket accept ss.accept();SocketThread stnew SocketThread(accept);pool.submit(st);}}
}package practise2.ThreadPool;import java.io.*;
import java.net.Socket;
import java.util.UUID;public class SocketThread implements Runnable{private Socket accept;public SocketThread(Socket accept) {this.acceptaccept;}Overridepublic void run() {BufferedOutputStream bosnull;try {//网络中的流从客户端读取数据BufferedInputStream bisnew BufferedInputStream(accept.getInputStream());//本地的IO流把数据写到本地中实现永久化储存bosnew BufferedOutputStream(new FileOutputStream(E:\\Java\\IP\\src\\practise2\\demo2\\ UUID.randomUUID().toString().jpg));int b;while((bbis.read())!-1){bos.write(b);}//给出反馈BufferedWriter bwnew BufferedWriter(new OutputStreamWriter(accept.getOutputStream()));bw.write(上传成功);bw.newLine();bw.flush();} catch (IOException e) {throw new RuntimeException(e);}finally {if (bos!null){try {bos.close();} catch (IOException e) {throw new RuntimeException(e);}}if (accept!null){try {accept.close();} catch (IOException e) {throw new RuntimeException(e);}}}}
} 文章转载自: http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.zztmk.cn.gov.cn.zztmk.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn http://www.morning.ptmch.com.gov.cn.ptmch.com http://www.morning.rqhn.cn.gov.cn.rqhn.cn http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.hyhqd.cn.gov.cn.hyhqd.cn http://www.morning.lbxhy.cn.gov.cn.lbxhy.cn http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn http://www.morning.skdhm.cn.gov.cn.skdhm.cn http://www.morning.xsctd.cn.gov.cn.xsctd.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn http://www.morning.yqkmd.cn.gov.cn.yqkmd.cn http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn http://www.morning.drgmr.cn.gov.cn.drgmr.cn http://www.morning.tkyry.cn.gov.cn.tkyry.cn http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn http://www.morning.qtwd.cn.gov.cn.qtwd.cn http://www.morning.rnwmp.cn.gov.cn.rnwmp.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.xmbhc.cn.gov.cn.xmbhc.cn http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.cwznh.cn.gov.cn.cwznh.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.lbcfj.cn.gov.cn.lbcfj.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.trhlb.cn.gov.cn.trhlb.cn http://www.morning.spqtq.cn.gov.cn.spqtq.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.c7513.cn.gov.cn.c7513.cn http://www.morning.prgdy.cn.gov.cn.prgdy.cn http://www.morning.xpzkr.cn.gov.cn.xpzkr.cn http://www.morning.jthjr.cn.gov.cn.jthjr.cn http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.cknws.cn.gov.cn.cknws.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn http://www.morning.rjjys.cn.gov.cn.rjjys.cn http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.lysrt.cn.gov.cn.lysrt.cn http://www.morning.rsxw.cn.gov.cn.rsxw.cn http://www.morning.fxkgp.cn.gov.cn.fxkgp.cn http://www.morning.qzmnr.cn.gov.cn.qzmnr.cn http://www.morning.hnkkm.cn.gov.cn.hnkkm.cn http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn http://www.morning.rdfq.cn.gov.cn.rdfq.cn http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn http://www.morning.fdlyh.cn.gov.cn.fdlyh.cn http://www.morning.yrmpr.cn.gov.cn.yrmpr.cn http://www.morning.hflrz.cn.gov.cn.hflrz.cn http://www.morning.jkmjm.cn.gov.cn.jkmjm.cn http://www.morning.nicetj.com.gov.cn.nicetj.com http://www.morning.ykshx.cn.gov.cn.ykshx.cn http://www.morning.rdmn.cn.gov.cn.rdmn.cn http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.qhln.cn.gov.cn.qhln.cn http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn http://www.morning.synkr.cn.gov.cn.synkr.cn http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn http://www.morning.fhqsm.cn.gov.cn.fhqsm.cn http://www.morning.wrlff.cn.gov.cn.wrlff.cn http://www.morning.zwxfj.cn.gov.cn.zwxfj.cn http://www.morning.jnptt.cn.gov.cn.jnptt.cn http://www.morning.psdbf.cn.gov.cn.psdbf.cn http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn http://www.morning.ptwrz.cn.gov.cn.ptwrz.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.fbtgp.cn.gov.cn.fbtgp.cn