目的:在windows下编写一个java客户端程序和一个java服务端程序,在windows中运行客户端程序,linux中运行服务端程序,实现客户端(windows下)和服务端(linux下)通信,即实现互发信息
步骤:
1. 实现windows能够连接到虚拟机linux,即确保ping通虚拟机linux(我的虚拟机IP为192.168.0.100);
2. 编写客户端程序和服务端程序,代码如下:
客户端:
import java.io.*;
import java.net.*;
public class MyClient
{
public static void main(String[] args)
{
try
{
//连接ip:port
Socket s = new Socket( "192.168.0.100", 8880 );
String sendMsg = "";
while(true)
{
// 通过文件流发送消息
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
BufferedWriter bu = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter( bu, true );
// 发送
System.out.print("input your message to send:");
BufferedReader buf = new BufferedReader (new InputStreamReader(System.in));
sendMsg = buf.readLine();
pw.println(sendMsg);
// 读取从服务器回送的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
String response = br.readLine();
System.out.println( "server response is :" + response );
}
} catch (Exception e)
{
e.printStackTrace();
}
return;
}
}
服务端
:
import java.io.*;
import java.net.*;
// 服务端
public class MyServerTest
{
public static void main(String[] args)
{
try
{
// 创建ServerSocket
ServerSocket ss = new ServerSocket(8880);
System.out.println("i am listening port:8880...");
// 监听,直到某个客户端来连接,一旦连接成功
// 就会得到一个socket(好像是一个数据管道)
Socket s = ss.accept(); // 若没有客户端来连接就会阻塞,一旦有来连接就会返回,注意该行代码不能放在while循环中 //,否则只能进行一次通信
while(true)
{
// 可以读取从客户端发送的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
String msg = br.readLine();
System.out.println( "client send:::" + msg );
// 从服务器端回一个消息
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
PrintWriter pw = new PrintWriter( osw, true );
pw.println( "i get your message: " + msg );
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
3. 在虚拟机centos中编译并启动服务程序,出现:i am listening port:8880...表示成功启动,
在windows下的Eclipse中运行客户端程序,即可进行通信了,结果如下:
客户端输出结果:
input your message to send:hello server
server response is :i get your message: hello server
input your message to send:how are you server
server response is :i get your message: how are you server
input your message to send:are you foolish boy server
server response is :i get your message: are you foolish boy server
input your message to send:
服务端输出结果:
client send:::hello server
client send:::how are you server
client send:::are you foolish boy server
6. 其他相关网址:
http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html
http://blog.csdn.net/yuebinghaoyuan/article/details/8503955