java大神们,我编写的客户端能够连接服务器,服务器的编码却停在了accept(),过不去,返回不

java大神们,我编写的客户端能够连接服务器,服务器的编码却停在了accept(),过不去,返回不,第1张

accept()是是阻塞的,程序会停在这行

有人来连接服务器,accept()才会返回Socket对象并继续运行下去

这种情况可能是客户端没有真正连接到服务器,才会一直阻塞在accept()

看看你的ip 端口对不对

//服务端程序:

import javaio;

import javanet;

public class TCPServer {

public static void main(String[] args) throws IOException {

new TCPServer()init();

}

@SuppressWarnings("static-access")

private void init() throws IOException{

@SuppressWarnings("resource")

ServerSocket server = new ServerSocket(1000);

Socket client = null;

while(true){

try {

client = serveraccept();

BufferedInputStream bis = new BufferedInputStream(clientgetInputStream());

byte[] b = new byte[1024];

int len = 0;

String message = "";

while((len=bisread(b))!=-1){

message = new String(b,0,len);

Systemoutprint("客户端:"+clientgetInetAddress()getLocalHost()getHostAddress()+"发来消息:" + message);

if("byte"equals(messagetrim()))

clientclose();

PrintWriter pw = new PrintWriter(clientgetOutputStream(),true);

pwprintln(message);

}

} catch (Exception e) {

Systemerrprintln("客户端:"+clientgetInetAddress()getLocalHost()getHostAddress()+" 已断开连接!");

}

}

}

}//客户端程序:

import javaio;

import javanetSocket;

public class TCPClient implements Runnable{

public static void main(String[] args) throws IOException {

new TCPClient()init();

}

private void init() throws IOException{

@SuppressWarnings("resource")

final Socket client = new Socket("127001",1000);

BufferedReader in = new BufferedReader(new InputStreamReader(Systemin));

String send = "";

while(true){

send = inreadLine();

PrintWriter out = new PrintWriter(clientgetOutputStream(),true);

if(!"byte"equals(sendtrim()))

outprintln(send);

else{

outprintln(send);

Systemexit(0);

}

new Thread(new TCPClient(){

@SuppressWarnings("static-access")

public void run(){

try {

BufferedInputStream bis = new BufferedInputStream(clientgetInputStream());

byte[] b = new byte[1024];

int len = 0;

while((len=bisread(b))!=-1){

Systemoutprintln("服务器:" +clientgetInetAddress()getLocalHost()getHostAddress()+"发来消息:"+new String(b,0,len)trim());

}

} catch (IOException e) {

Systemerrprintln("连接服务器失败!");

}

}

})start();

}

}

public void run() {}

}

//服务器测试结果:

客户端:1921680200发来消息:001 byte

客户端:1921680200发来消息:byte

客户端:1921680200 已断开连接!

客户端:1921680200发来消息:adasd

客户端:1921680200 已断开连接!

//客户端测试结果:

---001号客户端--

001 byte

服务器:1921680200发来消息:001 byte

byte //001礼貌说跟服务器说byte

---002号客户端--

adasd //002客户端直接关闭程序

服务器:1921680200发来消息:adasd

s

=

new

socket("127001",

8880)

前面那个ip是服务器的地址,只要这个ip写正确了,服务器放在哪里,客户端都能连上去的。

1270。01最简单的解释就是本机地址,你用这个ip,访问的就是你自己。

你可以去服务器上查看一下网络地址,然后把1270。01换成服务器的ip。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java大神们,我编写的客户端能够连接服务器,服务器的编码却停在了accept(),过不去,返回不

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情