You are on page 1of 4

HƯỚNG DẪN LAB 7

1. Form ClientChat

txtPort btnConnect

btnClose

txtSend btnSend

taServer

2. Code phía Client

import java.awt.Font;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class ClientChat extends javax.swing.JFrame {

public Socket clientSocket;


public DataOutputStream outToServer;
public BufferedReader inFromServer ;
public Thread tdClient;

public ClientChat() {
initComponents();
setLocationRelativeTo(null);
tdClient = new Thread(new Runnable() {
public void run() {
connectServer(Integer.parseInt(txtPort.getText()));
while (true) {
String s;
try {
s = inFromServer.readLine();
if (s!=null) {
taServer.append(s+"\n");
}
} catch (IOException ex) { };
}
}
});
}
public boolean connectServer(int port) {
try {
clientSocket = new Socket("localhost", port);
inFromServer = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));

outToServer = new DataOutputStream(clientSocket.getOutputStream());


} catch (IOException ex) {
return false;
}
return true;
}

private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {


try {
if (clientSocket!=null)
clientSocket.close();
System.exit(0);
} catch (IOException ex) { }
}

private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {


btnConnect.setEnabled(false);
txtSend.grabFocus();
tdClient.start(); // bat dau chat ...
}

private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {


if (outToServer!=null)
try {
outToServer.writeBytes(txtSend.getText() + '\n');
} catch (IOException ex) {}
}

3. Form Server

txtPort
btnClose

btnStart

taClient

txtSend

btnSend
4. Code phía Server
import java.awt.Font;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.stage.FileChooser;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;

public class ServerChat extends javax.swing.JFrame {


ServerSocket welcomeSocket;
Socket connectionSocket;
Thread tdServer;
BufferedReader inFromClient;
DataOutputStream outToClient;

public void connectClient(int port) {


try { welcomeSocket = new ServerSocket(port);
connectionSocket = welcomeSocket.accept();
inFromClient
= new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream()));
outToClient
= new DataOutputStream(connectionSocket.getOutputStream());
} catch (IOException ex) { }
}

public ServerChat() {
initComponents();
this.setLocationRelativeTo(null);
tdServer = new Thread(new Runnable() {
public void run() {
connectClient(Integer.parseInt(txtPort.getText()));
while (true) {
if (inFromClient!=null)
try {
String s = inFromClient.readLine();
if (s!=null)
taClient.append(s+"\n");
} catch (IOException ex) {}
}
}
});
}
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {
btnStart.setEnabled(false);
txtSend.grabFocus();
tdServer.start(); // chạy Server
}

private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {


try {
if (welcomeSocket!=null) {
welcomeSocket.close();
tdServer.interrupt();
}
System.exit(0);
} catch (IOException ex) { }
}

private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {


if (outToClient!=null)
try {
outToClient.writeBytes(txtSend.getText()+"\n");
} catch (IOException ex) {}
}

5. Thực hiện
- Chạy ứng dụng Server : gõ số port kết nối ( 1234 ), nhắp nút Start
- Chạy ứng dụng Client : gõ số port giống với port Serve , nhắp Connect
- Bắt đầu chat

You might also like