博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习笔记《一》网络编程基础
阅读量:4566 次
发布时间:2019-06-08

本文共 3496 字,大约阅读时间需要 11 分钟。

java是运行在虚拟机上的,所以java的库包很多,java.net这个包专门提供了对网络编程的支持。

网络连接分server和client两部分:

server:

1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.io.PrintWriter; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7  8  9 public class testForNet {10     public static void main(String[]args)throws IOException{11         ServerSocket serverSocket = null;12         try{13             serverSocket = new ServerSocket(7788);14             System.err.println("the server is runing...");15         }catch(IOException e){16             System.err.println("fail to listing in port 7788");17             System.exit(0);18         }19         Socket clientSocket = null;20         try{21             clientSocket = serverSocket.accept();22         }catch(IOException e){23             System.err.println("fail to create a link...");24             System.exit(0);25         }26         String address = clientSocket.getInetAddress().getHostAddress();27         System.out.println("a link from "+address+ "was created!" );28         29 30         BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));31         PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);32         33         String info = in.readLine();34         System.out.println("the message from client is :"+info);35         36         out.println("Hello client!");37         38         in.close();39         out.close();40         clientSocket.close();41         serverSocket.close();    42     }43 44 }

在第13行,用Socket(7788)在端口号为7788的端口上建立一个监听,失败的话则抛出异常

在第21行,用accept()等待来自未知客户端的信息 ,在这里会产生一个终端,如果没client到来,会一直等待

在第26行,获取了来自client的IP地址

在第30行,先获取client的数据流,转换成字符流,再建立一个缓冲流。in是用来读取数据临时对象

在第31行,建立写入数据的临时对象out

在第33行,从in里面读取一行数据,这是字符型的。

在第36行,把数据写入到out中。

client:

1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.net.InetAddress; 4 import java.net.Socket; 5 import java.net.UnknownHostException; 6 import java.io.*; 7  8 public class testForNet1 { 9     public static void main(String [] agrs){10         Socket client = null;11         try{12             client = new Socket("127.0.0.1",7788);13             InetAddress server = client.getInetAddress();14             System.out.println("success to link with:"+server.getHostAddress());15         }catch(UnknownHostException e){16             System.out.println("the server address is wrong!");17             System.exit(-1);18         }catch(IOException e){19             System.out.println("failed in creating a link with server");20             System.exit(-1);21         }22         try{23         PrintWriter out = new PrintWriter(client.getOutputStream(),true);24         out.println("Hello,server");25         }catch(IOException e){26             System.err.println("IO Exception");27         }28         try{29             BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));30             String info = in.readLine();31             System.out.println("the message from server is:"+info);32         }catch(IOException e){33             System.err.println("IO Exception");34         }    35     }36 37 }

在第12行,建立与127.0.0.1的端口7788的连接

在第13行,获取服务器的地址,

在第23行,建立写入的临时对象out

在第24行,往out里面写入数据

在第29行,建立临时读取对象in

在第30行,读取一行数据

 

整个连接通讯过程是,先运行server,服务器在等待未知的客户端连接,再运行client,向服务器发送信息,

服务器接收到信息后,给客户端发送信息。客户端接收信息后,打印,结束。

注:因为这是在同一台电脑上的测试,所以server和client的IP都是一样的。

 

转载于:https://www.cnblogs.com/yeyue/archive/2013/04/07/YOONA.html

你可能感兴趣的文章
如何在windows xp professional安装iis的解决方法
查看>>
抽象类和接口
查看>>
使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
查看>>
golang 常见疑惑总结
查看>>
8大你不得不知的Android调试工具
查看>>
pc端元素拖拽
查看>>
Sublime Text3使用Package Control 报错There Are No Packages Available For Installation
查看>>
判断连通图是否有环(并查集)
查看>>
汽车之家面试题2016
查看>>
POJ-数据结构-优先队列模板
查看>>
【HAOI2006】旅行(并查集暴力)
查看>>
css实现文本超出部分省略号显示
查看>>
留言板
查看>>
vue-router组件状态刷新消失的问题
查看>>
Android UI开发第十四篇——可以移动的悬浮框
查看>>
java8的一些用法
查看>>
(十)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK
查看>>
2018-11-19站立会议内容
查看>>
STM32 通用定时器相关寄存器
查看>>
【题解】1621. 未命名
查看>>