java实现简单的客户端和服务端的通信。服务端和客户端均为本机
服务端
@Test
public void server() {
ServerSocket ss = null;
Socket socket = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
//1.创建服务器的ServerSocket,指明自己的端口号
ss = new ServerSocket(8899);
//2.调用accpet()接受客户点的Socket
socket = ss.accept();
//3.获得输入流
is = socket.getInputStream();
//4.读取输入流的数据
baos = new ByteArrayOutputStream();
byte buffer[]=new byte[5];
int len;
while((len=is.read(buffer))!=-1) {
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
System.out.println("收到了来自于:"+socket.getInetAddress().getHostAddress()+"的数据");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//5.关闭资源
if(ss!=null)
try {
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(socket!=null)
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(is!=null)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(baos!=null)
try {
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
@Test
public void client() {
InetAddress inet=null;
Socket socket=null;
OutputStream os=null;
try {
//1.创建Scoket对象指明服务器的ip号和端口号
inet=InetAddress.getByName("127.0.0.1");
socket=new Socket(inet,8899);
//2.获取输出流,用于输出数据
os=socket.getOutputStream();
//3.写出数据的操作
os.write("你好,我是客户端飞舞的法拉克".getBytes());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//4.资源的关闭
if(os!=null)
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(socket!=null)
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
启动时,要先启动服务端,然后启动客户端
运行结果: