Em đang gặp phải vấn đề khi luyện tập với socket.
Vấn đề là em đã connect Socket đến được Server rồi đã có thể gửi và nhận. Nhưng, khi sử dụng Socket để truyền vào 1 Form khác để tiếp tục gửi và nhận trên Form đó, thì lại không thể gửi nhận được nữa.
Mọi người có thể chỉ em cách để giải quyết được không? Em cảm ơn mọi người!
Đây là phần code dùng để connect tới server (đã connect thành công):
public void intialNewChat(String friendName, InetAddress IPServer, int portServer) throws Exception {
final Socket connclient = new Socket(IPServer, portServer);
ObjectOutputStream sendrequestChat = new ObjectOutputStream(connclient.getOutputStream());
User user = new User();
user.setRegister("Chat_With", friendName, "", server.getIP().getHostAddress(), portClient);
String data = parse.parseToJson(user);
sendrequestChat.writeObject(data);
sendrequestChat.flush();
ObjectInputStream receivedChat = new ObjectInputStream(connclient.getInputStream());
String msg = (String) receivedChat.readObject();
System.out.println("here: " + msg);
ChatForm chat = new ChatForm(); // tiếp tục lấy socket đã connect ở trên để truyền vào 1 form này để tiếp tục xử lý nhưng lại không được
chat.OpenForm(nameUser, friendName, connclient, portClient);
}
Đây là phần xử lý ở Server:
private boolean waitForConnection() throws Exception {
connection = server.accept();
obInputStream = new ObjectInputStream(connection.getInputStream());
String data = (String) obInputStream.readObject();
User newData = new User();
System.out.println(data) // khi in ra ở đây lại không hiển thị gì cả
if (newData.getEvent().equals("Chat_With")) {
flag = "Chat_With";
message = messageData(newData.getNameUser(), "Chat_with_you");
}
else if (newData.getEvent().equals("Chat")) {
flag = "Chat";
System.out.println("Chat");
}
return true;
}
Còn đây là phần xử lý ở trên Form:
public class Chat extends Thread {
private Socket connect;
private ObjectOutputStream outMessage;
private ObjectInputStream inMessage;
private String friendName = "";
private String message = "";
private ChatForm chat;
private boolean isStop = false;
public Chat(Socket connection, String name, String guest)
throws Exception {
connect = new Socket();
connect = connection;
friendName = guest;
}
@Override
public void run(){
super.run();
while(!isStop){
try{
inMessage = new ObjectInputStream(connect.getInputStream());
Object obj = inMessage.readObject();
message = obj.toString();
chat.updateMessageReceive(message);
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
public synchronized void sendMessage(Object obj) throws IOException{
outMessage = new ObjectOutputStream(connect.getOutputStream());
User user = new User();
ParseData parse = new ParseData();
user.setRegister("Chat", friendName, "", "server.getIP().getHostAddress()", 1);
String data = parse.parseToJson(user);
System.out.println(connect.getRemoteSocketAddress().toString().split(":")[1]);
outMessage.writeObject(data);
outMessage.flush();
}
}
Mong được mọi người chỉ dẫn. Em cảm ơn rất nhiều!