注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

TERONY的博客

Still Achieving.

 
 
 

日志

 
 

sleepless in java & java.net  

2011-06-18 20:10:20|  分类: Profession |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

“也许只有在 Unix 下才能看到命令行式的聊天方式了。”

“当然不,你可以在任何地方看到这种方式。”

                             ---TERONY

 要编译下面的程序代码,稍比之前的代码“麻烦”些。

 要建立一个包,名字是:recethread,将监听线程类放在包里面,就是这样。。。

 监听线程代码:

 

package recethread;

import java.net.*;
import java.io.*;

public class ReceiveMsgThread implements Runnable {
 private Socket s;
 
 public ReceiveMsgThread(Socket s) {
  this.s = s;
 }
 public void run() {
  //从此套接字中获取输入流并包装
  BufferedReader in = null;
  try {
   in = new BufferedReader(new InputStreamReader(s.getInputStream()));
   while (true) {
    System.out.println(in.readLine());
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

 

 服务器端代码:

 

import java.io.*;
import java.net.*;
import recethread.*;

public class TCPChatServer {
 public static void main(String[] args) {
  ServerSocket ss = null;
  Socket s = null;
  try {
   //创建本地服务套接字,端口1234
   ss = new ServerSocket(1234);
   //监听并接收客户端的连接
   s = ss.accept();
   System.out.println("服务器已经做好监听准备.");
   //启动监听线程
   new Thread(new ReceiveMsgThread(s)).start();
   
   PrintWriter out = new PrintWriter(s.getOutputStream(), true);
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   while (true) {
    out.println(br.readLine());
   }
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (ss != null) {
    try {
     ss.close();
    } catch (IOException e) { e.printStackTrace(); }
   }
   if (s!= null) {
    try {
     s.close();
    } catch (IOException e) { e.printStackTrace(); }
   }
  }
 }
}

客户端代码:

import java.net.*;
import java.io.*;
import recethread.*;

public class TCPChatClient {
 public static void main(String[] args) {
  Socket s = null;
  try {
   s = new Socket("127.0.0.1", 1234); //连接到服务器端,端口1234
   System.out.println("客户端已建立与服务器的连接.");
   //创建监听服务端的线程
   new Thread(new ReceiveMsgThread(s)).start();
   //客户端信息发送
   PrintWriter out = new PrintWriter(s.getOutputStream(), true);
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   while (true) {
    out.println(br.readLine());
   }
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (s != null) {
    try {
     s.close();
    } catch (IOException e) { e.printStackTrace(); }
   }
  }
 }
}

import java.net.*;
import java.io.*;
import recethread.*;

public class TCPChatClient {
 public static void main(String[] args) {
  Socket s = null;
  try {
   s = new Socket("127.0.0.1", 1234); //连接到服务器端,端口1234
   System.out.println("客户端已建立与服务器的连接.");
   //创建监听服务端的线程
   new Thread(new ReceiveMsgThread(s)).start();
   //客户端信息发送
   PrintWriter out = new PrintWriter(s.getOutputStream(), true);
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   while (true) {
    out.println(br.readLine());
   }
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (s != null) {
    try {
     s.close();
    } catch (IOException e) { e.printStackTrace(); }
   }
  }
 }
}

                              

 

 

  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017