首页 > 编程语言 >Java Socket通信(一)之客户端程序 发送和接收数据

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

时间:2023-02-02 09:57:55浏览次数:63  
标签:Java Socket client 客户端 客户端程序 close new 接收数据 socket

 

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

网络应用分为客户端和服务端两部分,而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,client,客户端,客户端程序,close,new,接收数据,socket
From: https://www.cnblogs.com/ios9/p/17084964.html

相关文章

  • Java中Socket 实现最简单的客户端与服务端通信
    Java中Socket实现最简单的客户端与服务端通信引言:因为最近项目中要接入某通信协议接口,基于TCP/IP的socket接口。于是就在本地弄一个最简单的Socket通信仅供学习。话不多......
  • JavaScript 中URL构造函数
    前言URL对于我们开发人员来讲,应该是非常熟悉了。在对URL进行参数拼接时,我们一般都会直接进行字符串拼接或使用模版字符串,因为这样非常方便,但是我们这样其实会在不知不觉......
  • 通过IDEA生成JavaDoc文档
    一.通过IDEA来生成JavaDoc文档:1.创建一个存放JavaDoc的文件夹2.打开IDEA上方工具(Tools),生成JavaDoc文档(GenerateJavaDoc...)//如图一3.选择我们要生成的......
  • 读Java8函数式编程笔记08_测试、调试和重构
    1. Lambda表达式的单元测试1.1. 单元测试是测试一段代码的行为是否符合预期的方式1.2. Lambda表达式没有名字,无法直接在测试代码中调用1.2.1. 将Lambda表达式放入......
  • 方法final参数java8感想
    今天看到Latke的demo里有final的形参,查了一下使用final参数的状态有两种:1.让接收项目的程序员知道这个变量不能修改2.这个参数不能被重新赋值java8中有一种方法引用......
  • java_swing绘制图形
    在java的jpanel绘制图形使用paint方法,在里面使用super.paint清除之前的残留在while里使用repaint进行循环绘画publicvoiddisplay(){ this.repaint(); } public......
  • 【Javaweb】EL表达式
    什么是EL表达式,EL表达式的作用?EL表达式的全称是:ExpressionLanguage。是表达式语言。EL表达式的什么作用:EL表达式主要代替jsp页面中的表达式脚本在jsp页面中进行数据的输......
  • java学习Day.5
    数据类型java是强类型语言:严格要求符合规定,所有变量先定义才能使用。弱语言:符合规定就好publicclassdemeo02{publicstaticvoidmain(String[]args){......
  • 深入理解Java多线程(1) - Java并发编程的艺术
    今天深度学习一下《Java并发编程的艺术》的第1章并发编程的挑战,深入理解Java多线程,看看多线程中的坑。注意,哈肯的程序员读书笔记并不是抄书,而是将书中精华内容和哈肯的开发......
  • java(17)java序列化和反序列化
    一、理解Java序列化和反序列化Serialization(序列化):将java对象以一连串的字节保存在磁盘文件中的过程,也可以说是保存java对象状态的过程。序列化可以将数据永久保存在磁盘......