A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁二跃 中级黑马   /  2012-7-12 20:27  /  1803 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.net.DatagramPacket;
  5. import java.net.DatagramSocket;
  6. import java.net.InetAddress;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. import java.util.concurrent.Executors;


  10. public class Demo
  11. {
  12.         public static void main(String[] args)
  13.         {                                                                    
  14.                 Executors.newSingleThreadExecutor().execute(new Sender());
  15.                 Executors.newSingleThreadExecutor().execute(new Receiver());
  16.                
  17.         }
  18. }


  19. //此类用于向某个  ip 的某个端口发送信息
  20. class Sender implements Runnable{
  21.         int port = 2323;//目标端口
  22.         String address="127.0.0.1";//目标 IP
  23.        
  24.         BufferedReader br;

  25.         public void run() {
  26.        
  27.                 br = new BufferedReader(new InputStreamReader(System.in));
  28.                 String str;
  29.                 DatagramSocket socket;
  30.                 DatagramPacket packet;
  31.                 try {
  32.                         socket = new DatagramSocket();
  33.                         for (;;) {// 不断输入数据 并发送
  34.                                 System.out.print("请输入:");
  35.                                 str = br.readLine();
  36.                                 byte[] buf = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " ---->" + str).getBytes();
  37.                                 packet = new DatagramPacket(buf, buf.length,InetAddress.getByName(address),port);
  38.                                 socket.send(packet);
  39.                                 str="";

  40.                            }
  41.                   } catch (Exception e) {
  42.                System.out.println("发送失败");
  43.                 }

  44.         }
  45. }


  46. //此类用于 在 固定端口监听  接受信息
  47. class Receiver implements Runnable{
  48.      int port = 2323;
  49.         public void run() {
  50.        
  51.                 try{
  52.                         DatagramSocket socket =new DatagramSocket(port);//该端口应与 sender 发送的端口一致
  53.                        
  54.                         for(;;){
  55.                                 byte[] buf=new byte[1024];
  56.                                 DatagramPacket packet =new DatagramPacket(buf, buf.length);
  57.                                 socket.receive(packet);
  58.                                 String msg = new String(packet.getData());
  59.                                 System.out.println(msg);
  60.                         }
  61.                        
  62.                 }catch (Exception e) {
  63.                       System.out.println("启动失败");
  64.                 }
  65.         }
  66. }
复制代码
这是我今天在公司时写的一个小程序。在控制台输入信息发送到一个目标IP的某个端口,然后在端口接受信息并显示。现在的问题是 公司的系统用的是日文的,输入的中文在接受端显示的是乱码。我知道是编码问题,可是应该如何解决呢? 试了好多方法不能奏效 请高手指点……

1 个回复

正序浏览
我记得在转换流里有个构造方法可以指定编码集,试下看!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马