qq_18337481 2015-06-10 16:22 采纳率: 0%
浏览 1952
已结题

JAVA客户端与服务端通信问题

public void sendCMD(final byte[] buffer,final String ip)
{
    new Thread(new Runnable() {  
        @Override
        public void run() {

            Socket socket=null;
            try{

                 socket = new Socket(InetAddress.getByName(ip), Proxys.PORT_RECEIVE + Max); 
                 InputStream inputStream = new ByteArrayInputStream(buffer);
                 OutputStream outputStream = socket.getOutputStream();
                 byte buffer [] = new byte[1024];
                 int temp=0;
                 while((temp = inputStream.read(buffer)) != -1){
                     outputStream.write(buffer,0,temp);}
                 outputStream.flush();
                    }
                            客户端发送指令给服务端



                                public void run() {
    // 消息循环
     ServerSocket serverSocket = null;  
     Socket socket = null;  
 try {  
     //定义TCP监听  
     serverSocket = new ServerSocket(Proxys.PORT_RECEIVE + con.Max);  
     socket = serverSocket.accept(); 
     int temp=0;
     //定义缓冲区  
     byte[] buffer=new byte[1024];  
     String str="";
     //定义接收数据包  
     InputStream inputStream = socket.getInputStream();  
     while ((temp = inputStream.read(buffer)) != -1) { 
         str=new String(buffer, 0, temp);}

                服务端接收客户端发送的流




                                不知道哪个地方有问题,请大神看一下上面贴上的代码是否有问题   谢谢
  • 写回答

8条回答 默认 最新

  • sunfeilong1993 2015-06-10 16:55
    关注

    代码太乱。能否贴上完整的代码?

    客户端

     public class DayTimeClient {
        //请求服务器,获得信息并输出
        public static void main(String[] args) {
            try (Socket socket = new Socket("localhost",13)) {
                socket.setSoTimeout(15000);
                InputStream in = socket.getInputStream();
    
                StringBuilder sb = new StringBuilder();
                InputStreamReader reader = new InputStreamReader(in,"ASCII");
                for (int c = reader.read(); c != -1 ; c = reader.read()) {
                    sb.append((char) c);
                }
                System.out.println(sb);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }//end main()
    }
    
    

    服务器

     public class DayTimeServer {
    
        public static void main(String[] args) {
            DayTimeServer dayTimeServer = new DayTimeServer();
            dayTimeServer.start();
        }//end main()
    
        public void start(){
            //线程池
            ExecutorService pool = Executors.newFixedThreadPool(50);
            //服务器Socket
            ServerSocket serverSocket = null;
            try {
                serverSocket = new ServerSocket(13);
                while(true){
                    //获取请求信息Socket
                    Socket connection = serverSocket.accept();
                    Callable<Void> task = new DayTimeTask(connection);
                    pool.submit(task);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                try {
                    if(serverSocket != null) {serverSocket.close();}
                } catch (IOException e) {}
            }
        }//end test()
    }
    

    服务器用到的一个线程类

     public class DayTimeTask implements Callable<Void> {
    
        private Socket socket;
    
        public DayTimeTask (Socket socket) {
            this.socket = socket;
        }//end DayTimeTask()
    
        @Override
        public Void call() {
            try {
                Writer writer = new OutputStreamWriter(socket.getOutputStream(),"ASCII");
                Date now = new Date();
                writer.write(now.toString()+"\r\n");
                writer.flush();
            } catch(IOException e) {
                System.err.println(e);
            } finally {
                try {
                    socket.close();
                } catch (IOException e) {
                }
            }
            return null;
        }//end call()
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统