eclipse中链接服务器后总是总动断开

博客内容描述了在Eclipse中使用Java Socket编程时,客户端连接服务器后经常自动断开的情况。博主提供了客户端和服务端的代码示例,并寻求解决连接不稳定的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

eclipse中链接服务器后总是总动断开,

import java.io.;
import java.net.
;
import java.util.*;
public class ClientGuess {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
Socket mysocket=null;
DataInputStream inData=null;
DataOutputStream outData=null;
Thread thread ;
ReadNumber readNumber1=null;
try{ mysocket=new Socket();
readNumber1 = new ReadNumber();
thread = new Thread(readNumber1); //负责读取信息的线程
System.out.print(“输入服务器的IP:”);
String IP = scanner.nextLine();
System.out.print(“输入端口号:”);
int port = scanner.nextInt();
if(mysocket.isConnected()){}
else{
InetAddress address=InetAddress.getByName(IP);
InetSocketAddress socketAddress=new InetSocketAddress(address,port);
mysocket.connect(socketAddress);
InputStream in = mysocket.getInputStream(); //mysocket调用getInputStream()返回该套接字的输入流
OutputStream out = mysocket.getOutputStream();//mysocket调用getOutputStream()返回该套接字的输出流
inData =new DataInputStream(in);
outData = new DataOutputStream(out);
readNumber1.setDataInputStream(inData);
readNumber1.setDataOutputStream(outData);
thread.start(); //启动负责读取随机数的线程
}
}
catch(Exception e) {
System.out.println(“服务器已断开”+e);
}
}
}
class ReadNumber implements Runnable {
Scanner scanner = new Scanner(System.in);
DataInputStream in;
DataOutputStream out;
public void setDataInputStream(DataInputStream in) {
this.in = in;
}
public void setDataOutputStream(DataOutputStream out) {
this.out = out;
}
public void run() {
try {
out.writeUTF(“Y”);
while(true) {
String str = in.readUTF();
System.out.println(str);
if(!str.startsWith(“询问”)) {
if(str.startsWith(“猜对了”))
continue;
System.out.print(“好的,我输入猜测:”);
int myGuess = scanner.nextInt();
String enter = scanner.nextLine(); //消耗多余的回车
out.writeInt(myGuess);
}
else {
System.out.print(“好的,我输入Y或N:”);
String myAnswer = scanner.nextLine();
out.writeUTF(myAnswer);
}
}
}
catch(Exception e) {
System.out.println(“与服务器已断开”+e);
return;
}
}
};

import java.io.;
import java.net.
;
import java.util.*;
public class ServerNumber {
public static void main(String args[]) {
ServerSocket server=null;
ServerThread1 thread;
Socket you1=null;
while(true) {
try{ server= new ServerSocket(1475);//创建在端口4331上负责监听的 ServerSocket对象
}
catch(IOException e1)
{ System.out.println(“正在监听”);
}
try{ you1= server.accept(); // server调用accept()返回和客户端相连接的Socket对象
System.out.println(“客户的地址:”+you1.getInetAddress());
}
catch (IOException e)
{ System.out.println(“正在等待客户”);
}
if(you1!=null)
{ new ServerThread1(you1).start();
}
else
{ continue;
}
}
}
}
class ServerThread1 extends Thread {
Socket socket;
DataInputStream in=null;
DataOutputStream out=null;
ServerThread1(Socket t) {
socket=t;
try { out=new DataOutputStream(socket.getOutputStream());
in=new DataInputStream(socket.getInputStream());
}
catch (IOException e) {}
}
public void run1() {
try{
while(true) {
String str = in.readUTF();
boolean boo =str.startsWith(“Y”)||str.startsWith(“y”);
if(boo) {
out.writeUTF(“给你一个1至100之间的随机数,请猜它是多少呀!”);
Random random=new Random();
int realNumber = random.nextInt(100)+1;
handleClientGuess(realNumber);
out.writeUTF(“询问:想继续玩输入Y,否则输入N:”);
}
else {
return;
}
}
}
catch(Exception exp){}
}
public void handleClientGuess(int realNumber){
while(true) {
try{ int clientGuess = in.readInt();
System.out.println(clientGuess);
if(clientGuess>realNumber)
out.writeUTF(“猜大了”);
else if(clientGuess<realNumber)
out.writeUTF(“猜小了”);
else if(clientGuess==realNumber) {
out.writeUTF(“猜对了!”);
break;
}
}
catch (IOException e) {
System.out.println(“客户离开”);
return;
}
}
}
}

请求大神帮忙看下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值