首页 / JAVA / Java:进阶学习(1)——网络编程
Java:进阶学习(1)——网络编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java:进阶学习(1)——网络编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2350字,纯文字阅读大概需要4分钟。
内容图文
Java:进阶学习(1)——网络编程
基础
Socket与ServerSocket
Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
Socket方法
getInetAddress(); 远程服务端的IP地址getPort(); 远程服务端的端口getLocalAddress() 本地客户端的IP地址getLocalPort() 本地客户端的端口getInputStream(); 获得输入流getOutStream(); 获得输出流Socket状态isClosed(); //连接是否已关闭,若关闭,返回true;否则返回falseisConnect(); //如果曾经连接过,返回true;否则返回falseisBound(); //如果Socket已经与本地一个端口绑定,返回true;否则返回false
ServerSocket,此类实现服务器套接字。服务器套接字等待通过网络传入的请求然后基于该请求执行某些操作,可能向请求者返回结果。
说明:两者本质均是Socket见的通信,一方为客户,另一方为服务器。客户连接服务器,服务器接受客户并生成一个与其交流的Socket,然后客户发送请求,服务器做出响应。
Socket与ServerSocket的交互
连接超时问题及策略
1.从套接字读取信息时,在有数据可供访问之前,读操作会被阻塞。
解决:对于不同的应用应该设置合理的超时值。
socket.setSoTimeout(10000);
说明:设置超时值后,如果没有在规定时间内接受到数据,就会抛出SocketTimeOutException异常。你可以捕获这个异常并做出反应。
2.客户端在连接到服务器之前会一直堵塞。
解决:可以先构造一个无连接的套接字,然后再使用一个超时来进行连接的方法解决这个问题。
Socket socket = new Socket("127.0.0.1",12345); 用下面方法代替上面方法 Socket socket1 = new Socket(); socket1.connect(new InetSocketAddress("127.0.0.1",12345),timeout);
实例
客户端代码
package basic_socket; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.util.Scanner; public class SocketTest { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1",12345); InputStream inputStream = socket.getInputStream(); Scanner scanner = new Scanner(inputStream); while (scanner.hasNextLine()) { System.out.println(scanner.nextLine()); } } catch (IOException e) { e.printStackTrace(); } } }
服务器代码
package basic_socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ServerSocketTest { public static void main(String ars[]) { try { ServerSocket serverSocket = new ServerSocket(12345); while (true) { Socket socket =serverSocket.accept(); Thread client = new Client(socket); client.start(); } } catch (IOException e) { e.printStackTrace(); } } } class Client extends Thread { private Socket socket =null; public Client(Socket socket) { this.socket =socket; } publicvoid run() { try{ System.out.println("新连接:"+socket.getInetAddress()+":"+socket.getPort()); Thread.sleep(10000); }catch(Exception e){e.printStackTrace();}finally{ try{ System.out.println("关闭连接:"+socket.getInetAddress()+":"+socket.getPort()); if(socket!=null)socket.close(); }catch(IOException e){ e.printStackTrace(); } } } }
原文:http://www.cnblogs.com/MrSaver/p/6882255.html
内容总结
以上是互联网集市为您收集整理的Java:进阶学习(1)——网络编程全部内容,希望文章能够帮你解决Java:进阶学习(1)——网络编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。