Java Socket通信(一)之客户端程序 发送和接收数据

作者:紫岩渊 时间:2023-07-05 00:34:48 

网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。

对于Socket通信简述,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。

例1:客户端的简略写法(一)。


Socket client = null;
try{
client = new Socket(Ip,Port);
String msg="发送的数据内容!";
//得到socket读写流,向服务端程序发送数据
client.getOutputStream().write(msg.getBytes());
byte[] datas = new byte[2048];
//从服务端程序接收数据
client.getInputStream().read(datas);
System.out.println(new String(datas));
}catch(Exception e){
e.printStackTrace();
}finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
System.out.println("systemerr:" +e);
}
}
}

例2:客户端简略写法(二)。


try{
client = new Socket();
SocketAddress socketAddress = new InetSocketAddress(Ip,Port);
client.connect(socketAddress, 3000);
String msg="访问的服务器返回内容!";
//得到socket读写流,向服务端程序发送数据
client.getOutputStream().write(msg.getBytes());
byte[] datas = new byte[2048];
//从服务端程序接收数据
client.getInputStream().read(datas);
System.out.println(new String(datas));
}catch(Exception e){
e.printStackTrace();
}finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
System.out.println("systemerr:" +e);
}
}
}

例3:客户端的完整写法。


try {
//1.建立客户端socket连接,指定服务器位置及端口
Socket socket =new Socket(Ip,Port);
//2.得到socket读写流
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
//输入流
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
//3.利用流按照一定的操作,对socket进行读写操作
String sendInfo="向服务器发送的数据信息!";
pw.write(sendInfo);
pw.flush();
socket.shutdownOutput();
//接收服务器的相应
String replyInfo=null;
while(!((replyInfo=br.readLine())==null)){
System.out.println("接收服务器的数据信息:"+replyInfo);
}
//4.关闭资源
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

关于Java Socket通信(一)之客户端程序 发送和接收数据的相关知识,小编就给大家介绍到这里,更多信息请登陆脚本之家网站了解更多内容!

标签:java,socket,发送,接收
0
投稿

猜你喜欢

  • Spring Boot整合Kafka教程详解

    2023-06-14 06:02:54
  • android 实现侧边弹窗特效代码

    2021-10-18 07:23:02
  • Java流处理stream使用详解

    2021-09-17 18:27:58
  • Android Studio实现弹窗设置

    2022-08-20 19:49:03
  • 简单实现Android本地音乐播放器

    2021-09-04 19:28:28
  • Android开发AsmClassVisitorFactory使用详解

    2023-07-22 05:34:53
  • java利用easyexcel实现导入与导出功能

    2022-09-29 06:40:16
  • C# 设置防火墙的创建规则

    2023-03-21 09:13:42
  • GridView基于pulltorefresh实现下拉刷新 上拉加载更多功能(推荐)

    2022-08-29 23:51:58
  • Java中二维数组的正确使用方法介绍

    2023-11-19 16:14:18
  • 基于java.lang.IllegalArgumentException异常报错问题及解决

    2023-09-14 16:03:34
  • Kotlin协程之Flow异常示例处理

    2022-10-02 09:30:58
  • Android EditText 监听用户输入完成的实例

    2022-06-22 18:41:54
  • kafka消费者kafka-console-consumer接收不到数据的解决

    2022-04-26 06:05:42
  • Java中SimpleDateFormat日期格式转换详解及代码示例

    2023-09-04 22:13:43
  • C#获取局域网MAC地址的简单实例

    2022-08-04 11:26:12
  • java中switch选择语句代码详解

    2023-09-28 19:34:29
  • C#实现xml文件反序列化读入数据到object的方法

    2023-08-20 00:43:08
  • 图解红黑树及Java进行红黑二叉树遍历的方法

    2023-04-20 22:09:14
  • Java字符串的intern方法有何奥妙之处

    2022-07-21 13:38:16
  • asp之家 软件编程 m.aspxhome.com