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);}

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




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

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

客户端

 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()
}

给你个例子你参考一下吧


 Server.java: 

import java.io.*;
import java.net.*; 
public class Server{       
    publicstatic void main(String[] args){             
        try{
            ServerSocket s = newServerSocket(9000);
            while (true) {
                Socket incoming =s.accept();
                try{
                    FileInputStreamfstream = new FileInputStream("Server.java"); //假设输入文件为Server.java
                    DataInputStream in =new DataInputStream(fstream);
                    BufferedReaderbr = new BufferedReader(new InputStreamReader(in));
                    OutputStreamostream = incoming.getOutputStream();
                    PrintWriterout = new PrintWriter(ostream, true);
                    String strLine;
                    while ((strLine =br.readLine()) != null) {
                        out.println(strLine);
                    }
                    in.close();
                } finally {
                    incoming.close();
                }
            } 
        }catch (Exception e){ 
            e.printStackTrace();
        }
    }
}

客户端Client.java: 

import java.io.*;
import java.net.*;
import java.util.*; 
public class Client{       
    publicstatic void main(String[] args){
        try {
            Sockets = new Socket("localhost", 9000);
            try {
                InputStreaminStream = s.getInputStream();
                Scannerin = new Scanner(inStream);
                PrintWriter out = newPrintWriter("test.txt");//假设输出文件为test.txt
                while(in.hasNextLine()){
                    Stringline = in.nextLine();
                    System.out.println(line);
                    out.println(line);
                }
                out.close();
            } finally {
                s.close();
            } 
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

你代码贴不不全,不过JAVA的socket通信网上有很多例子的,耐心看懂就ok了 没什么难的

你具体有什么问题呢?

你代码不全,好像是定义的变量是局部变量。到其他函数,就没有用了。
参照“PB人生”

去看下我的博客,有个nio实现通信

问题好多。你这个还会粘包

问题好多。你这个还会粘包