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() }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 matlab有关常微分方程的问题求解决,来真人,不要ai!
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?
- ¥100 求三轴之间相互配合画圆以及直线的算法