90设计网站几次是什么意思,企业网站建设结论,珠海市网站建设,wordpress 局域网 访问文章目录说明InetAddress介绍Socket介绍ServerSocket介绍实现简单的Socket通信总结说明
这里介绍下如何在java里面进行socket编程 InetAddress介绍
这个类表示一个Internet协议(IP)地址#xff0c;我们可以通过ip或者主机名来构建这个类 Testpublic void t1() throws Except…
文章目录说明InetAddress介绍Socket介绍ServerSocket介绍实现简单的Socket通信总结说明
这里介绍下如何在java里面进行socket编程 InetAddress介绍
这个类表示一个Internet协议(IP)地址我们可以通过ip或者主机名来构建这个类 Testpublic void t1() throws Exception {// 通过ip构建InetAddressInetAddress inetAddress1 InetAddress.getByAddress(new byte[]{14,119,104,-67});// 通过域名构建InetAddressInetAddress inetAddress2 InetAddress.getByName(www.baidu.com);// 通过本机地址构建InetAddress localHost InetAddress.getLocalHost();System.out.println(inetAddress1);System.out.println(inetAddress2);System.out.println(localHost);}输出的结果如下
/14.119.104.189
www.baidu.com/14.119.104.189
lc-computer/192.168.179.1可以发现通过ip构建的不会包含域名通过域名构建的既包括域名也包括ip Testpublic void t2() throws Exception {InetAddress address InetAddress.getByName(www.baidu.com);System.out.println(address);// 以文本形式返回IP地址字符串System.out.println(address.getHostAddress());// 获取此IP地址的完全限定域名System.out.println(address.getCanonicalHostName());// 获取主机名System.out.println(address.getHostName());// 获取原始ip地址,是一个byte数组127以上的数字使用负数表示,num-256System.out.println(Arrays.toString(address.getAddress()));}上面是这个类的一些常见方法输出如下
www.baidu.com/14.119.104.189
14.119.104.189
14.119.104.189
www.baidu.com
[14, 119, 104, -67]Socket介绍
这个类用于创建套接字 上面列出了Socket的构造器一般使用传入ip和port这种构造器就足够了。
下面给出了socket的基本使用 Testpublic void t1() throws Exception {// 创建一个socketSocket socket new Socket(InetAddress.getLocalHost(), 9999);// 得到输入输出流InputStream inputStream socket.getInputStream();OutputStream outputStream socket.getOutputStream();// 一系列操作//最后关闭流以及socketinputStream.close();outputStream.close();socket.close();}ServerSocket介绍
这个类用于创建服务器套接字的一旦启动这个服务那么它就会一直监听是否有客户端进行连接。
创建ServerSocket非常简单只需要在创建的时候传入要监听的端口即可 // 指定要创建的端口ServerSocket serverSocket new ServerSocket(8888);我们使用accept这个方法监听是否有客户端进行连接一旦有客户端进行连接那么就会创建一个新的Socket与客户端进行交互。 // 监听到这个套接字的连接并接受它。该方法阻塞直到建立连接。Socket accept serverSocket.accept();对于accept一般都是放在一个死循环里面的监听到有客户端连接那么就创建一个新的线程将Socket传递到新的线程让这个线程与客户端进行交互自己则继续监听。 while (true){Socket socket serverSocket.accept();// 创建一个新线程与客户端进行交互new Thread(new Xxx(socket)).start();}实现简单的Socket通信
现在创建一个ServerSocket在9999端口进行监听只要有客户端连接那么就向客户端发送字符串然后直接关闭服务端。 public static void main(String[] args) throws Exception{ServerSocket serverSocket new ServerSocket(9999);System.out.println(在9999端口进行监听);Socket socket serverSocket.accept();System.out.println(有客户端连接开始返回数据);PrintWriter printWriter new PrintWriter(socket.getOutputStream());printWriter.write(hello world\n);printWriter.write(exit\n);System.out.println(数据返回完成关闭所有的流);printWriter.close();socket.close();serverSocket.close();}现在创建一个客户端去连接9999端口然后输出返回的字符串如果是字符串是exit那么就关闭Socket。 public static void main(String[] args) throws Exception {Socket socket new Socket(InetAddress.getLocalHost(), 9999);System.out.println(与服务器连接建立成功);Scanner in new Scanner(socket.getInputStream());String s ;System.out.println(开始返回数据);while (!Objects.equals(s in.nextLine(), exit)) {System.out.println(s);}System.out.println(数据返回结束关闭所有的流);in.close();socket.close();}运行服务端然后运行客户端控制台输出如下 总结
这里介绍了java种Socket的基本使用对于Socket细节还有很多其实都是调api具体的细节还是得要去学习计算机网络。