通信编程之java socket初探

最近在思考一些软件的实现原理,研究一下那些热门软件是怎么开发出来的,颇有点意思。回顾每天使用的软件,发现平时用的最多的软件应该是通信软件了,如微信、钉钉等,于是在想,这些通信软件是怎么开发出来的,使用了哪些技术?平时大家开发软件的工作大部分是CRUD,对一些不是自己的工作领域,一些底层技术研究的比较少,所以利用业余时间也对一些底层技术和自己感兴趣的软件做些研究。这篇是对通信软件的初探。

Java通信软件的开发技术从socket说起,下面对socket技术做些基础的了解和练习。

先看一下实战的效果图:

 

一、socket是什么?

网络通信里面,我们都听过TCP/UDP,HTTP,那么Socket是什么?Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。通常可用于通信软件开发,RPC协议开发,文件传输开发等。Socket使用中主要分为ServerSocket和Socket,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Socket编程是一种基于TCP/IP协议的网络编程,它是实现网络通信的一种方式。在Java中,Socket编程可以使用Java的标准库java.net包来实现。下面是一个简单的Socket通信的代码示例: 服务端代码: ```java import java.net.*; import java.io.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(12345); } catch (IOException e) { System.err.println("Could not listen on port: 12345."); System.exit(1); } Socket clientSocket = null; try { System.out.println("Waiting for connection....."); clientSocket = serverSocket.accept(); System.out.println("Accepted connection : " + clientSocket); } catch (IOException e) { System.err.println("Accept failed."); System.exit(1); } BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); String inputLine, outputLine; while ((inputLine = in.readLine()) != null) { System.out.println("Server: " + inputLine); out.println(inputLine); if (inputLine.equals("Bye.")) { break; } } out.close(); in.close(); clientSocket.close(); serverSocket.close(); } } ``` 客户端代码: ```java import java.net.*; import java.io.*; public class Client { public static void main(String[] args) throws IOException { Socket socket = null; PrintWriter out = null; BufferedReader in = null; try { socket = new Socket("localhost", 12345); out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader( socket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host: localhost."); System.exit(1); } catch (IOException e) { System.err.println("Couldn't get I/O for " + "the connection to: localhost."); System.exit(1); } BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("Client: " + userInput); System.out.println("Server: " + in.readLine()); if (userInput.equals("Bye.")) { break; } } out.close(); in.close(); stdIn.close(); socket.close(); } } ``` 以上代码实现了一个简单的客户端和服务端之间的通信。运行服务端程序后,再运行客户端程序,输入内容并回车,即可在客户端和服务端之间实现通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工程师小明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值