解决方案 »
- 看一个简单的String
- nio socketchannel.read 为-1时 如果我不在此处cancel掉这个key,那么cpu占用肯定100%,如何解决啊在线等
- 请问哪里可以下载到孙卫琴编写的:《java面向对象编程》这本书?
- 请问在SWING中的进度条方法中,怎么设置进度条的大小,长和宽?
- JAVA调用存储过程
- 哪位大哥能指导一下JAVA中的IO是怎么学的,我都糊了!!在线等!!
- StringBuffer.capacity()返回的是什么?
- 请问如何在一个窗口中调用另一个窗口?
- 如何从文件中读取中文字符?
- String的问题(split)
- 请问你们新建Java项目的时候项目名怎么填?
- 菜鸟求牛人帮忙
服务端A和C也能通信
那么,B想和C通信,发送消息给A,告诉A这是发送给C的,A收到后发送给C
A只是中转站,客户端之间都是独立的,服务端起到的就是中转的作用
B发送给服务端的第一条信息可以加上发送的对象和自己的ID,C同理,然后通过A转发给对方。
LZ加我QQ 185313301,发代码给你,我也是今天搞定的。
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client2 {
private static String readline;
public static BufferedReader is; public static void main(String[] args) {
String SEND_OBJECT = "0";
String Client_ID = "1";
try {
// 向本机的4700端口发出客户请求
Socket socket = new Socket("127.0.0.1", 4700);
// 由系统标准输入设备构造BufferedReader对象
BufferedReader sin = new BufferedReader(new InputStreamReader(
System.in));
// 由socket对象得到输入流,并构造PrintWriter对象
PrintWriter os = new PrintWriter(socket.getOutputStream());
is = new BufferedReader(new InputStreamReader(
socket.getInputStream())); os.println(Client_ID + "," + SEND_OBJECT);
os.flush();
readline = sin.readLine();
Thread message = new Thread(new MessageThread1());
message.start();
while (!readline.equals("bye")) {
os.println(readline);
os.flush();
System.out.println("Client2:" + readline);
readline = sin.readLine();
}
os.close();
is.close();
socket.close();
} catch (IOException e) {
System.out.println("Error" + e);
}
}
}
class MessageThread1 implements Runnable{
public MessageThread1(){}
String message;
@Override
public void run() {
while(true){
try {
message = Client2.is.readLine();
System.out.println("Client1:" + message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}}这个是我客户端的代码,客户端连接服务端就生成一个socke对象然后加入socket集合。