虚拟机centos中java代码实现linux(作为服务端),windows(作为客户端)通信

目的:在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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值