囮137 2021-08-10 23:22 采纳率: 60%
浏览 41
已结题

写了一个简单的服务器的程序在IDEA上运行没有问题,但是在转成.exe后出现了如下错误,也试过cmd查询杀死端口但是不好使

如图,.Server.exe可以正常运行,但是cheatA和cheatB都无法正常运行

//server.exe
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket sst=new ServerSocket(11451);
        ServerSocket ssk=new ServerSocket(11452);
        // byte[] C1_out=new byte[10000];
        byte[] C1_in= new byte[10000];
        //byte[] C2_out=new byte[10000];
        byte[] C2_in= new byte[10000];

        Socket c1=sst.accept();
        Socket c2=ssk.accept();
        OutputStream os1=c1.getOutputStream();
        OutputStream os2=c2.getOutputStream();
        InputStream is1=c1.getInputStream();
        InputStream is2=c2.getInputStream();
        is1.read(C1_in);
        os2.write(C1_in);
        is2.read(C2_in);
        os1.write(C2_in);



    }
}

//CheaterA.exe
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class CheatA {
    public static void main(String[] args) throws IOException {
        Scanner sc=new Scanner(System.in);
        Socket res=new Socket("192.168.10.131",11451);
        byte[] bt=new byte[10000];
        int len=0;
        OutputStream os =res.getOutputStream();
        InputStream is=res.getInputStream();
        while(true) {
            os.write(sc.next().getBytes(StandardCharsets.UTF_8));
            len = is.read(bt);
            System.out.println("r:"+bt.toString());
        }
    }
}

//CheaterB.exe
import java.io.IOException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;


public class CheaterB {
    public static void main(String[] args) throws IOException {
        Scanner sc=new Scanner(System.in);
        Socket res=new Socket("192.168.10.131",11452);
        byte[] bt=new byte[10000];
        int len=0;
        OutputStream os =res.getOutputStream();
        InputStream is=res.getInputStream();
        while(true) {
            os.write(sc.next().getBytes(StandardCharsets.UTF_8));
            len = is.read(bt);
            System.out.println("r:"+bt.toString());
        }
    }
}


img

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-08-11 00:03
    关注

    端口占用问题。一个exe文件已经运行,再次运行就会报端口占用。
    可能是因为双击运行exe文件吧,触发了多次。
    试着关闭进程,或者重启电脑。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 修改了问题 8月10日
  • 创建了问题 8月10日

悬赏问题

  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏