当前位置:首页 > 芯闻号 > 充电吧
[导读]============================ 1. IP地址   IP地址,就是每一个接入互联网的主机的唯一身份标识,IP地址   0-255组成的,分成了4段,每段0-255   IP地

============================ 1. IP地址   IP地址,就是每一个接入互联网的主机的唯一身份标识,IP地址   0-255组成的,分成了4段,每段0-255   IP地址分类:ABCDE   局域网:192.168开头   本地回环地址:127.0.0.1 每一个电脑,网卡正常工作,主机的IP就是127.0.0.1   IP地址这个事物也是对象,对IP地址对象的描述类   java.net.InetAddress   私有构造方法,静态方法返回本类对象的   static InetAddress getLocalHost() 获取本地主机IP地址对象   这个方法在哪个机器上运行,那个机器就是本地主机     InetAddress类中的两个方法 getHostAddress()通过IP地址对象,获取IP地址   InetAddress类中的两个方法 getHostName()通过IP地址对象,获取主机名   如果获取一台主机的IP或者主机名,必须先获取到一台主机的IP对象(InetAddress)   获取远程主机IP地址对象   static InetAddress getByName(String host) 参数,传递主机名,传递IP地址 /*  * 获取本地主机IP地址对象  * InetAddress类的静态方法 getLocalHost  */ import java.net.*; public class InetAddressDemo {  public static void main(String[] args)throws UnknownHostException {   InetAddress i = InetAddress.getLocalHost();   System.out.println(i);//机器名/IP地址   //获取主机名   String name = i.getHostName();   //获取IP地址   String ip = i.getHostAddress();   System.out.println(name+"..."+ip);  } }
 //=================================================== 2. 端口号   操作系统的一个数字物理标识   看成是进入或者出去操作系统的一个门牌号   我邮寄一个包裹 昌平建材城西路100号   收件:大兴黄村北路200号   端口号 0-1024操作系统保留号   最大65535   常见端口号:     80 http访问互联网的默认端口号     http://www.baidu.com:80     21 FTP数据传输端口号     8080 Javaweb服务器默认端口号     3306 MySQL数据的连接端口号     1521 Oracle数据库连接端口号     1433 MS SQLServer数据库连接端口号 //=================================================== 3. 传输协议   发送,接受两个方面约定好的内容   两个人打电话,相约晚上11点-11点30分可以通话,语音采用中文   UDP -- 面向无连接协议   通信双方不需要连接   不需要连接,不可靠,丢数据   连接效率很高   不允许传输大数据,限制在64KB以内   TCP -- 面向连接协议   通信双方需要建立连接,三次握手,效率底下   连接,安全可靠协议,不丢失数据   适合于大数据传输 //=================================================== 4. Socket服务  Socket就是为网络服务提供的一种机制  通信的两端都有Socket  提供接收和发送功能的  写功能的时候,接收还是发送的,必须有Socket服务  UDP的传输   分为发送端和接收端   发送端:     A 发送的数据封包 -- 封装数据包的类,DatagramPacket     B 将封装好的数据包,交给Socket进行发送 -- DategramSocket     C 关闭资源   接收端:     A. 接收数据包,Socket接收     B. 拆包     C. 拆包后的信息,显示出来     D. 关闭资源     DategramPacket数据包:     构造方法DatagramPacket(byte[] buf, int length, InetAddress address, int port)                               字节数据 长度 IP地址 端口号     构造方法DatagramPacket(byte[] buf, int length) 接收     int getLength() 接收数据包中,数组的有效个数     int getPort()获取发送端口号     InetAddress getAddress()返回发送端的IP地址对象    DatagramSocket发送包,接收包    构造方法,发送时候空参数的    发送方法,send(数据包)    构造DatagramSocket(int port) 接收,传递端口号    接收的方法 receive(数据包)
/*  * UDP发送端  */ import java.net.*; import java.util.Scanner; public class UDPSend {  public static void main(String[] args) throws Exception{   new Scanner(System.in).nextLine();   //将数据封装到数据包 DategramPacket   byte[] bytes = "你好UDP".getBytes();   DatagramPacket dp = new     DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"),10000);   //创建投递服务的Socket对象,DatagramSocket   DatagramSocket ds = new DatagramSocket(8000);   //将数据包,交给Socket发送   ds.send(dp);   //关闭资源   ds.close();  } }

/*  * UDP的接收端  */ import java.net.*; public class UDPReceive {  public static void main(String[] args) throws Exception{   //创建投递服务的Socket对象   DatagramSocket ds = new DatagramSocket(10000);   //定义数据包,接收   byte[] bytes = new byte[10];   DatagramPacket dp = new DatagramPacket(bytes,bytes.length);   //Socket接收数据包   ds.receive(dp);   //获取数组中的有效个数   int length = dp.getLength();   //获取端口号   int port = dp.getPort();   //获取发送端的IP地址对象   InetAddress i = dp.getAddress();   String ip = i.getHostAddress();   //输出全部的信息   System.out.println(new String(bytes,0,length)+"..."+ip+"..."+port);   //关闭资源   ds.close();    } }
//=================================================== 5. TCP   客户端和服务器   建立连接,客户端必须连接服务器,否则程序无法运行   客户端的Socket服务,Socket   服务器端的Socket服务,ServerSocket   Socket类构造方法 Socket(String host, int port)   构造方法,一旦执行,就会去连接服务器,如果没有服务器,抛出异常    OutputStream getOutputStream() 通过Socket对象获取字节输出流    InputStream getInputStream()通过Socket对象获取字节输入流    ServerSocket类构造方法ServerSocket(int port)  Socket accept()获取客户端的连接对象,这个方法告诉服务器,是哪一个客户端连接的  客户端通过自己Socket获取字节输出流,向服务器发送数据  服务器通过客户端连接对象Socket获取字节输入流,读取客户端发送的数据  服务器通过客户端连接对象Socket获取字节输出流,向客户端发送数据  客户端通过字节的Socket对象获取字节输入流,读取服务器发回的数据

 /*  * TCP的客户端  */ import java.io.*; import java.net.*; public class TCPClient {  public static void main(String[] args)throws Exception {   //创建客户端的Socket对象   Socket s = new Socket("127.0.0.1",10000);   //将数据传输到服务器,字节输出流   OutputStream out = s.getOutputStream();   //写,字节数组   out.write("你好TCP".getBytes());     //客户端获取服务器发回的信息,字节输入流   InputStream in = s.getInputStream();   byte[] bytes = new byte[10];   int len = 0 ;   len = in.read(bytes);   System.out.println(new String(bytes,0,len));   //关闭资源   s.close();  } }


/*  * TCP服务器  */ import java.io.*; import java.net.*; public class TCPServer {  public static void main(String[] args) throws Exception{   //创建服务器的Socket服务   ServerSocket ss = new ServerSocket(10000);   //知道是哪个客户端连接的   Socket s = ss.accept();//线程等,等着客户端连接   //有了客户端对象Socket,完全可以使用客户端连接对象,获取IO流   //获取字节输入流   InputStream in = s.getInputStream();   byte[] bytes = new byte[10];   int len = 0 ;   len = in.read(bytes);   System.out.println(new String(bytes,0,len));     //服务器回客户端一个信息,谢谢收到了   OutputStream out = s.getOutputStream();   out.write("谢谢收到了".getBytes());   s.close();   ss.close();  } } //=================================================== 6. TCP的案例  键盘录入字母,发送给服务器,服务器转成大写字母,回传客户端,客户端读取服务器发回的大写字母  通过案例暴露很多问题    A. 键盘读取 OK    B. 读取到的键盘,发出去没有,OK    C. 服务器收到了吗,服务器收到了 readLine()方法线程阻塞,等着读 OK    D. 服务器大写数据发回了吗 OK    E. 客户端读取到了 OK
/*  * 转成大写客户端  */ import java.io.*; import java.net.*; public class TCPClientToUpperCase {  public static void main(String[] args) throws Exception{   //建立Socket服务   Socket s = new Socket("127.0.0.1",10000);   //读取键盘输入   BufferedReader bfr = new     BufferedReader(new InputStreamReader(System.in));     //建立字节流对象,转成字符流,读取服务器发回的大写字母   BufferedReader bfrin =     new BufferedReader(new InputStreamReader(s.getInputStream()));     //向服务器发送数据,采用打印流   PrintWriter out = new PrintWriter(s.getOutputStream(),true);   String line = null;   while((line = bfr.readLine())!=null){    if("over".equals(line))break;    out.println(line);    //将数据打印到服务器,读取服务器回来的大写    String server = bfrin.readLine();    System.out.println("大写字母是::"+server);   }   bfr.close();   s.close();  } }
/*  * 转换大写服务器  */ import java.io.*; import java.net.*; public class TCPServerToUpperCase {  public static void main(String[] args) throws Exception{   //建立服务器Socket,获取客户端连接对象   ServerSocket ss = new ServerSocket(10000);   Socket s = ss.accept();   //读取客户端的小写字母,都是文本,按行读   BufferedReader bfrin = new     BufferedReader(new InputStreamReader(s.getInputStream()));     //创建打印流对象,将大写数据,写回客户端   PrintWriter out = new PrintWriter(s.getOutputStream(),true);     String line = null;   while((line = bfrin.readLine())!=null){    if("over".equals(line))     break;     out.println(line.toUpperCase());   }   s.close();   ss.close();  } }


//=================================================== 7. TCP文本上传  将C盘上的源文件,通过TCP服务器传递到D盘upload目录中    客户端    IO读取文本文件    打印流,将文本打印到服务器    读取上传成功四个字  服务器    读取客户端的文本文件,保存到目的中(D盘)    将上传成功四个字,会给客户端    服务器停不下来  服务器读取的是Socket中的字节流null;  客户端,和服务器之间,约定一个结束标记  java工程师们很善良,定义好了结束标记  Socket类中的方法 void shutdownOutput()
/*  * TCP文本上传客户端  */ import java.io.*; import java.net.*; public class TCPCilentUpLoad {  public static void main(String[] args) throws Exception{   Socket s = new Socket("127.0.0.1", 10000);   //字符流,读取文本文件   BufferedReader bfr = new BufferedReader(new FileReader("c:\1.txt"));   //将文本使用打印流,打印到服务器   PrintWriter out = new PrintWriter(s.getOutputStream(),true);   String line = null;   while((line=bfr.readLine())!=null){    out.println(line);   }   //out.println("*&^%$#@@#$TRJHGFD&%^$#@");   s.shutdownOutput();   //读取服务器的上传成功   InputStream in = s.getInputStream();   byte[] bytes = new byte[10];   int len = in.read(bytes);   System.out.println("服务器说::"+new String(bytes,0,len));   bfr.close();   s.close();  } }


*  * 文本上传服务器  */ import java.io.*; import java.net.*; import java.util.*; public class TCPServerUpLoad {  public static void main(String[] args)throws Exception {   ServerSocket ss = new ServerSocket(10000);   Socket s = ss.accept();   //读取客户端的数据,转换流   BufferedReader bfrin = new     BufferedReader(new InputStreamReader(s.getInputStream()));   //将目的封装成File对象   File file = new File("d:\upload");   if(!file.exists())    file.mkdirs();   //封装数据目的,使用打印流   //对上传的文件名修改   String filename = "itcast"+System.currentTimeMillis()+new Random().nextInt(999999999)+".txt";   PrintWriter pw = new PrintWriter(new FileWriter(file+File.separator+filename),true);   String line = null;   while((line = bfrin.readLine())!=null){    pw.println(line);   }   //上传成功写回客户端     OutputStream out = s.getOutputStream();   out.write("上传成功".getBytes());   pw.close();   s.close();   ss.close();  } }

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭