java大神们,我编写的客户端能够连接服务器,服务器的编码却停在了accept(),过不去,返回不
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。
0条评论