java中用socket实现客户端与服务端双向连接问题 10
我现在要写一个服务器和客户端在不同的主机上,这个很容易,就是客户端说一句,服务端才能说一句,服务端说一句,客户端才能说一句,该怎么办呢?用TCP,udp都可以,我的QQ是...
我现在要写一个服务器和客户端在不同的主机上,这个很容易,就是客户端说一句,服务端才能说一句,服务端说一句,客户端才能说一句,该怎么办呢?用TCP,udp都可以,我的QQ是466236549,最好有代码啊!没有财富值了。
我想客户端说几句都可以,服务器说几句也可以,什么时候说都可以,不用相互等,这样相互通信,类似QQ那种,但不用太复杂, 展开
我想客户端说几句都可以,服务器说几句也可以,什么时候说都可以,不用相互等,这样相互通信,类似QQ那种,但不用太复杂, 展开
1个回答
2014-09-06 · 知道合伙人数码行家
关注
展开全部
//服务端程序:
import java.io.*;
import java.net.*;
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 = server.accept();
BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
byte[] b = new byte[1024];
int len = 0;
String message = "";
while((len=bis.read(b))!=-1){
message = new String(b,0,len);
System.out.print("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:" + message);
if("byte".equals(message.trim()))
client.close();
PrintWriter pw = new PrintWriter(client.getOutputStream(),true);
pw.println(message);
}
} catch (Exception e) {
System.err.println("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+" 已断开连接!");
}
}
}
}
//客户端程序:
import java.io.*;
import java.net.Socket;
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("127.0.0.1",1000);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String send = "";
while(true){
send = in.readLine();
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
if(!"byte".equals(send.trim()))
out.println(send);
else{
out.println(send);
System.exit(0);
}
new Thread(new TCPClient(){
@SuppressWarnings("static-access")
public void run(){
try {
BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
byte[] b = new byte[1024];
int len = 0;
while((len=bis.read(b))!=-1){
System.out.println("服务器:" +client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:"+new String(b,0,len).trim());
}
} catch (IOException e) {
System.err.println("连接服务器失败!");
}
}
}).start();
}
}
public void run() {}
}
//服务器测试结果:
客户端:192.168.0.200发来消息:001 byte
客户端:192.168.0.200发来消息:byte
客户端:192.168.0.200 已断开连接!
客户端:192.168.0.200发来消息:adasd
客户端:192.168.0.200 已断开连接!
//客户端测试结果:
---001号客户端--
001 byte
服务器:192.168.0.200发来消息:001 byte
byte //001礼貌说跟服务器说byte
---002号客户端--
adasd //002客户端直接关闭程序
服务器:192.168.0.200发来消息:adasd
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询