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);}
服务端接收客户端发送的流
不知道哪个地方有问题,请大神看一下上面贴上的代码是否有问题 谢谢
JAVA客户端与服务端通信问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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() }
解决 无用评论 打赏 举报