昆明微网站,宁德城乡建设部网站,陕西seo主管,wordpress仿站博客视频计算机网络
就是将地理位置不同的具有独立功能的多台计算及外部设备#xff0c;通过通信线路连接起来#xff0c;在网络操作系统、网络管理软件以及网络通信协议的管理和协调下#xff0c;实现资源共享和信息传递的计算机系统
目的
传播交流信息、数据交换、通信
如何做…计算机网络
就是将地理位置不同的具有独立功能的多台计算及外部设备通过通信线路连接起来在网络操作系统、网络管理软件以及网络通信协议的管理和协调下实现资源共享和信息传递的计算机系统
目的
传播交流信息、数据交换、通信
如何做到
1.如何准确定位网络上的一台主机 192.xxx.xx.xx端口定位到这个计算机上的某个资源 2.找到主机如何传输数据 javaweb网页编程 b/s 网络编程tcp/ip c/s
网络通信的要素
如何实现网络的通信
1.ip、端口号 2.协议 tcp/ip协议 3.万物皆对象
IP
ip地址InetAdress 唯一定位一台网络上的计算机 127.0.0.1本机Locallost
IP地址分类
ipv4/ipv6 ipv4 127.0.0.1 4个字节 0~255 42亿 30亿在北美4亿在亚洲2011年用尽 ipv6128 8个无符号整数 公网互联网/私网局域网 ABCD类地址 192.168.xx.xx 专门给组织内部使用的 域名记忆ip问题
package com.xgglr;import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;public class IPDemo {public static void main(String[] args) {try {InetAddress[] inetAddresses InetAddress.getAllByName(127.0.0.1);System.out.println(Arrays.toString(inetAddresses));InetAddress[] localHosts InetAddress.getAllByName(localhost);System.out.println(Arrays.toString(localHosts));InetAddress localHost InetAddress.getLocalHost();System.out.println(localHost);InetAddress[] baiduName InetAddress.getAllByName(www.baidu.com);System.out.println(Arrays.toString(baiduName));for (InetAddress address : baiduName) {String canonicalHostName address.getCanonicalHostName();//规范名称String hostName address.getHostName();//域名String hostAddress address.getHostAddress();//IPSystem.out.println(canonicalHostName);System.out.println(hostName);System.out.println(hostAddress);System.out.println();}} catch (UnknownHostException e) {e.printStackTrace();}}
}
端口
表示计算机上的一个程序的进程不同的进程端口号不同区分如软件 被规定0~65535 tcp/udp 6553582 tcp:80 udp:80 单个协议下端口号不能冲突 端口分类共有端口0-1023 http80 https:443 ftp:21 Telent:23 程序注册端口1024-49151分配用户或者程序 tomcat8080 mysql3306 oracle1521 动态、私有49152-65535 netstat -ano 查看所有端口 netstat -ano|findstr “5900” 查看指定端口 tasklist|findstr “8696” 查看指定端口的进程
通信协议
网络通信协议速率传输码率代码结构传输控制 分层思想 tcp/ip协议一组协议 tcp用户传输协议udp用户数据报协议 出名的协议tcpip网络互联协议
tcp和udp对比
tcp打电话 连接 稳定 三次握手 四次挥手 客户端 服务端 传输完程 释放连接 效率低 udp发短信 不连接 不稳定 客户端、服务端 没有明确的界限 不能有没有准备好 都可以发送
TCP
客户端连接服务器Socket发送消息
package com.xgglr.tcpDemo;import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;//客户端
public class tcpClintDemo {public static void main(String[] args) {try {InetAddress byName InetAddress.getByName(localhost);int port 8888;Socket socket new Socket(byName,port);OutputStream outputStream socket.getOutputStream();outputStream.write(您好!!!这里时客户端.getBytes());outputStream.close();socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
服务端建立服务的接口ServerSocket等待用户的连接accept接受用户的消息
package com.xgglr.tcpDemo;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Arrays;//服务端
public class tcpServerDemo {public static void main(String[] args) {ServerSocket serverSocket null;Socket socket null;InputStream inputStream null;ByteArrayOutputStream byteArrayOutputStream null;try {serverSocket new ServerSocket(8888);while (true){socket serverSocket.accept();inputStream socket.getInputStream();//管道流byteArrayOutputStream new ByteArrayOutputStream();byte[] bytes new byte[1024];int len;while ((len inputStream.read(bytes)) ! -1){byteArrayOutputStream.write(bytes,0,len);}System.out.println(byteArrayOutputStream.toString());}} catch (IOException e) {e.printStackTrace();}finally {if (byteArrayOutputStream ! null){try {byteArrayOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if (inputStream ! null){try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (socket ! null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}if (serverSocket ! null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}}
}
文件上传
package com.xgglr.tcpDemo;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
//服务端
public class TcpFileDownLoaderServerDemo {public static void main(String[] args) {try {while (true){ServerSocket socket new ServerSocket(9999);Socket accept socket.accept();InputStream is accept.getInputStream();FileOutputStream fos new FileOutputStream(new File(D:\\software\\JavaCode\\javaSE\\JavaSE01\\src\\com\\xgglr\\tcpDemo\\tcp.jpg));byte[] buffer new byte[1024];int len;while ((len is.read(buffer)) ! -1){fos.write(buffer,0,len);}//确认接收到了可以断开accept.getOutputStream().write(已经接收可以关闭.getBytes());fos.close();is.close();accept.close();socket.close();}} catch (IOException e) {e.printStackTrace();}}
}
package com.xgglr.tcpDemo;import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端
public class TcpFileDownLoaderClintDemo {public static void main(String[] args) {try {//创建连接InetAddress byName InetAddress.getByName(localhost);int port 9999;Socket socket new Socket(byName,port);//创建输出流OutputStream os socket.getOutputStream();//读取文件FileInputStream fileInputStream new FileInputStream(new File(2.jpg));//写出文件byte[] buffer new byte[1024];int len;while ((len fileInputStream.read(buffer)) ! -1){os.write(buffer,0,len);}//通知服务器发送完毕socket.shutdownOutput();//确认是否接收InputStream is socket.getInputStream();//管道流ByteArrayOutputStream baos new ByteArrayOutputStream();byte[] bytes new byte[1024];int lens;while ((lens is.read(bytes)) ! -1){baos.write(bytes,0,lens);}System.out.println(baos.toString());fileInputStream.close();os.close();socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
UDP
不用连接需要知道地址
package com.xgglr.udp;import java.io.IOException;
import java.net.*;
//UDP客户端
public class UdpClint {public static void main(String[] args) {//建立连接Sockettry {DatagramSocket socket new DatagramSocket();//建包String msg 你好 Server;InetAddress localhost InetAddress.getByName(localhost);int port 9090;/*** byte buf[], 数据* int offset, 数据的起始长度* int length, 结束长度* netAddress address, 接受ip* int port 端口号* */DatagramPacket packet new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);//发送包socket.send(packet);socket.close();} catch (SocketException e) {e.printStackTrace();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
package com.xgglr.udp;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.util.Arrays;//UDP服务端
public class UdpServer {public static void main(String[] args) {//开放端口try {DatagramSocket socket new DatagramSocket(9090);//接受数据byte[] buffer new byte[1024];DatagramPacket packet new DatagramPacket(buffer, 0, buffer.length);socket.receive(packet);// 阻塞接收System.out.println(packet.getAddress().getHostName());System.out.println(packet.getPort());System.out.println(packet.getLength());// System.out.println(Arrays.toString(packet.getData()));socket.close();} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}