Tải bản đầy đủ (.docx) (39 trang)

BÁO CÁO THỰC HÀNH LẬP TRÌNH MẠNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (570.7 KB, 39 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO THỰC HÀNH LẬP TRÌNH MẠNG


LỜI CẢM ƠN
Lập trình mạng là một kiến thức chuyên ngành quan trọng của lĩnh vực công nghệ
thông tin, đặc biệt là ngành quản trị mạng. Có thể xem đây là một hướng đi rất rộng mở
cho sinh viên và việc nắm bắt những kĩ thuật cơ bản của nó cực kì cần thiết và quan
trọng.
Sau một loạt các môn học lí thuyết nền tảng như Mạng máy tính, Lập trình Java,
Lập trình mạng, thì học phần Thực hành Lập trình mạng này chính là hội tụ hiện thực các
kiến thức học trên sách vở.
Nội dung thực hành chủ yếu thực hiện việc lập trình Socket trên họ giao thức
TCP/IP và giao thức UDP trên các ứng dụng viết bằng ngôn ngữ Java, kết hợp các kĩ
thuật lập trình đa luồng, lập trình web JSP để thực hiện các hạng mục của học phần.
Thông qua các bài thực hành với độ khó tăng dần, sinh viên dần thông thạo với công việc
lập trình và một phần nào đó làm quen kĩ thuật xây dựng một hệ thống làm việc sao cho
hiệu quả.
Mỗi bài thực hành sẽ được chép mã nguồn vào báo cáo cùng với kết quả chạy thử
đính kèm bằng hình ảnh.
Dù đã kiểm tra nhiều lần nhưng trong báo cáo này có thể sẽ xuất hiện một số lỗi và
sai sót, do đó em rất mong đợi sự góp ý từ các thầy cô. Cảm ơn Thầy Nguyễn Văn
Nguyên trong suốt quá trình thực hành đã nhiệt tình hỗ trợ em.
Em xin chân thành cảm ơn!

Sinh viên thực hiện

2



NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Nhận xét:
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
…………
Xác nhận của giảng viên

3


BÀI THỰC HÀNH SỐ 1
HỌC PHẦN LẬP TRÌNH MẠNG
I.
XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CLIENT/SERVER
HOẠT ĐỘNG THEO GIAO THỨC TCP/IP

1. Yêu cầu
- Chương trình Server mở cổng và chờ nhận kết nối từ Client.
- Client gửi một chuỗi ký tự đến Server. Server nhận và xử lý gửi trả về cho
client các công việc:
+ Đổi chuỗi đã gửi thành chuỗi in hoa
+ Đổi chuỗi đã gửi thành chuỗi thường
+ Đếm số từ của chuỗi đã gửi
2. Thuật toán
Server lập trình theo hướng đa tuyến, nhận thông tin từ client gửi lên và trả
lời ngay lập tức. Sử dụng các phương thức toLowerCase() và toUpperCase() của
lớp String để chuyển cả string về chữ thường hoặc chữ hoa, sau đó dùng một thuật
toán đơn giản để đếm số từ có trong chuỗi.
Client thừa kế lớp Jframe để hiển thị giao diện.
3. Mã nguồn
3.1 Server
package server;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Server {
public static final String IP = "localhost";
public static final int PORT = 7004;
private ServerSocket serverSocket;
public Server(String host, int port) {
4



try {
serverSocket = new ServerSocket(port);
SocketThread socket = new
SocketThread(serverSocket.accept());
new Thread(socket).start();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args) {
new Server(IP, PORT);
}
}
class SocketThread implements Runnable {
private Socket s;
public SocketThread(Socket s) {
this.s = s;
}
@Override
public void run() {
try {
DataInputStream dis = new
DataInputStream(s.getInputStream());
DataOutputStream dos = new
DataOutputStream(s.getOutputStream());
String serverReceive = dis.readUTF();
String serverResponse = serverReceive.toUpperCase() + " "
+ serverReceive.toLowerCase() + " "
+ countWords(serverReceive);

dos.writeUTF(serverResponse);
} catch (IOException ex) {
Logger.getLogger(SocketThread.class.getName()).log(Level.SEVERE, null,
ex);
}
}
private int countWords(String s) {
int wordCount = 0;
boolean insideWord = false;
for (int i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i)) && i != s.length() - 1) {
5


insideWord = true;
} else if (!Character.isLetter(s.charAt(i)) && insideWord) {
wordCount++;
insideWord = false;
} else if (Character.isLetter(s.charAt(i)) && i == s.length() 1) {
wordCount++;
}
}
return wordCount;
}
}
3.2 Client
package client;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.*;
public class Client {
private static Socket socket;
private DataInputStream dataInputStream;
private DataOutputStream dataOutputStream;
public Client() {
JFrame f = new JFrame("Trần Hữu Phúc – 15T1");
f.setSize(1000, 600);
f.setResizable(false);
f.setLocationRelativeTo(null);
6


f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(null);
JLabel jlbEnterString = new JLabel("Client request");
jlbEnterString.setBounds(10, 10, 100, 50);
f.add(jlbEnterString);
JTextArea jtaClientSend = new JTextArea();
jtaClientSend.setBounds(120, 10, 750, 100);
f.add(jtaClientSend);
JButton btnSend = new JButton("SEND");
btnSend.setBounds(900, 10, 80, 50);
f.add(btnSend);
JLabel jlbResult = new JLabel("SERVER RESPONSE");
jlbResult.setBounds(450, 100, 200, 50);

f.add(jlbResult);
JLabel jlbUppercase = new JLabel("Uppercase");
jlbUppercase.setBounds(10, 150, 100, 50);
f.add(jlbUppercase);
JTextArea jtaResultUppercase = new JTextArea();
jtaResultUppercase.setBounds(120, 150, 750, 100);
f.add(jtaResultUppercase);
JLabel jlbLowercase = new JLabel("Lowercase");
jlbLowercase.setBounds(10, 300, 100, 50);
f.add(jlbLowercase);
JTextArea jtaResultLowercase = new JTextArea();
jtaResultLowercase.setBounds(120, 300, 750, 100);
f.add(jtaResultLowercase);
JLabel jlbNumberString = new JLabel("Number");
7


jlbNumberString.setBounds(10, 450, 100, 50);
f.add(jlbNumberString);
JTextField jtfResultNumbberString = new JTextField();
jtfResultNumbberString.setBounds(120, 450, 750, 50);
f.add(jtfResultNumbberString);
btnSend.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
try {
socket = new Socket("localhost",7004);
dataInputStream = new
DataInputStream(socket.getInputStream());
dataOutputStream = new

DataOutputStream(socket.getOutputStream());
String msg = jtaClientSend.getText();
dataOutputStream.writeUTF(msg);
dataOutputStream.flush();

String clientReceive =
dataInputStream.readUTF();
String[] arrReceive = clientReceive.split(" ");
int n =
Integer.parseInt(arrReceive[arrReceive.length - 1]);
for (int i = 0; i < n; i++) {
jtaResultUppercase.append(arrReceive[i] +" ");
}
for (int i = n; i < arrReceive.length - 2; i++) {

8


jtaResultLowercase.append(arrReceive[i]+" ");
}
jtfResultNumbberString.setText(arrReceive[arrReceive.length - 1]);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
f.setVisible(true);
}

public static void main(String[] args) {
new Client();
}
}

4. Kết quả

9


10


II.
XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CLIENT/SERVER
HOẠT ĐỘNG THEO GIAO THỨC TCP/IP
1. Yêu cầu
- Chương trình Client cho phép nhập vào từ bàn phím một chuỗi biễu diễn
một phép tính gồm các toán tử +, -, (, ).
Ví dụ: (1-2+5*2)/2
- Chương trình Server thực hiện tính toán và trả kết quả về cho Client.
-

2.Thuật toán
Client xây dựng một form đơn giản, nhập biểu thức cần tính vào một textbox rồi
gửi lên server. Server xây dựng một chương trình tính biểu thức trung tố (có thể
tính trực tiếp hoặc chuyển sang biểu thức hậu tố rồi tính), sau đó gửi kết quả về lại
cho Client.
3.Mã nguồn
3.1 Server

package server;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Stack;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Server {
public static final String IP = "127.0.0.1";
public static final int PORT = 2808;
private ServerSocket serverSocket;
public Server(String host, int port) {
try {
serverSocket = new ServerSocket(port);
System.out.println("Server is running in port " + port + " ...");
while (true) {
11


SocketThread socket = new SocketThread(serverSocket.accept());
new Thread(socket).start();
}
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args) {
new Server(IP, PORT);

}
}
class SocketThread implements Runnable {
private Socket s;
public SocketThread(Socket s) {
this.s = s;
}
@Override
public void run() {
try {
DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
while (true) {
String receive = dis.readUTF();
System.out.println(receive);
dos.writeUTF(TinhBieuThuc.calculator(receive));
}
} catch (IOException ex) {
Logger.getLogger(SocketThread.class.getName()).log(Level.SEVERE, null,
ex);
}
}
}
class TinhBieuThuc {
private static int priority(char c) {
if (c == '+' || c == '-') return 1;
12


else if (c == '*' || c == '/') return 2;

else return 0;
}
private static boolean isOperator(char c) {
char operator[] = { '+', '-', '*', '/', ')', '(' };
for (int i = 0; i < operator.length; i++) {
if (c == operator[i]) return true;
}
return false;
}
// change string to operator array
private static String[] processString(String sMath2) {
String sMath = "";
for (int i = 0; i < sMath2.length(); i++) {
if (sMath2.charAt(i) != ' ') sMath += sMath2.charAt(i);
}
String s1 = "", elementMath[] = null;
sMath = sMath.trim();
sMath = sMath.replaceAll("s+"," ");
boolean preIsOpe = false;
for (int i = 0; i < sMath.length(); i++) {
char c = sMath.charAt(i);
if (!isOperator(c)) {
s1 = s1 + c;
preIsOpe = true;
}
else {
if (preIsOpe) s1 += " ";
preIsOpe = false;
s1 = s1 + c + " ";
}

}
s1 = s1.trim();
s1 = s1.replaceAll("s+"," ");
elementMath = s1.split(" "); // split s1 to operators of array elementMath
return elementMath;
}
private static String[] postfix(String[] elementMath) {
13


String s1 = "", E[];
Stack <String> S = new Stack <String>();
for (int i = 0; i < elementMath.length; i++) {
char c = elementMath[i].charAt(0);
if (!isOperator(c)) s1 = s1 + " " + elementMath[i];
else {
if (c == '(') S.push(elementMath[i]);
else{
if (c == ')') {
char c1;
do {
c1 = S.peek().charAt(0);
if (c1 != '(') s1 = s1 + " " + S.peek();
S.pop();
} while (c1 != '(');
}
else{
while (!S.isEmpty() && priority(S.peek().charAt(0)) >=
priority(c)) {
s1 = s1 + " " + S.peek();

S.pop();
}
S.push(elementMath[i]);
}
}
}
}
while (!S.isEmpty()) {
s1 = s1 + " " + S.peek();
S.pop();
}
s1 = s1.trim();
E = s1.split(" ");
return E;
}
private static String valueMath(String[] elementMath) {
Stack <String> S = new Stack<String>();
for (int i = 0; i < elementMath.length; i++){
char c = elementMath[i].charAt(0);
if (!isOperator(c)) S.push(elementMath[i]);
14


else{
double num = 0f;
double num1 = Float.parseFloat(S.pop());
double num2 = Float.parseFloat(S.pop());
switch (c) {
case '+' : num = num2 + num1; break;
case '-' : num = num2 - num1; break;

case '*' : num = num2 * num1; break;
case '/' : num = num2 / num1; break;
default:
break;
}
S.push(Double.toString(num));
}
}
return S.pop();
}
public static String calculator(String sMath) {
//String sMath = "((78-910)+11)/12";
if (checkString(sMath) == false) return "Biểu thức không đúng!";
String[] eMath = processString(sMath);
eMath = postfix(eMath);
return valueMath(eMath);
}
private static boolean checkString(String str) {
for (int i = 0; i < str.length(); i++)
{
if (!(str.charAt(i) == ' ' ||
(str.charAt(i) >= '0' && str.charAt(i) <= '9') ||
isOperator(str.charAt(i))))
{
return false;
}
}
return true;
}
}

3.2 Client
package client;
15


import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import server.Server;
public class Client extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JButton btnProcess;
JTextField txtStringOutput;
JTextField txtStringInput;
private Socket socket;
private DataInputStream dataInputStream;
private DataOutputStream dataOutputStream;
public Client() {
GUI();

Connect();
}
private void GUI() {
this.setTitle(“Trần Hữu Phúc - 15T1");
this.setResizable(false);
this.setLocationRelativeTo(this);
this.setBounds(100, 100, 533, 160);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(null);
JLabel lblNhpChui = new JLabel("NHẬP BIỂU THỨC:");
16


lblNhpChui.setFont(new Font("Tahoma", Font.BOLD, 15));
lblNhpChui.setBounds(21, 25, 147, 24);
this.getContentPane().add(lblNhpChui);
txtStringInput = new JTextField();
txtStringInput.setFont(new Font("Tahoma", Font.BOLD, 15));
txtStringInput.setBounds(178, 25, 215, 24);
this.getContentPane().add(txtStringInput);
txtStringInput.setColumns(10);
btnProcess = new JButton("Xử lý");
btnProcess.setBounds(403, 27, 80, 24);
this.getContentPane().add(btnProcess);
JLabel lblKtQu = new JLabel("KẾT QUẢ:");
lblKtQu.setFont(new Font("Tahoma", Font.BOLD, 15));
lblKtQu.setBounds(21, 72, 99, 24);
this.getContentPane().add(lblKtQu);
txtStringOutput = new JTextField();
txtStringOutput.setFont(new Font("Tahoma", Font.BOLD, 15));

txtStringOutput.setColumns(10);
txtStringOutput.setBounds(178, 72, 215, 24);
this.getContentPane().add(txtStringOutput);
this.add(txtStringInput);
this.add(btnProcess);
this.add(txtStringOutput);
btnProcess.addActionListener(this);
this.setVisible(true);
}
public static void main(String[] args) {
new Client();
}
@Override
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
if (btn == btnProcess) {
try {
String sSend = txtStringInput.getText();
dataOutputStream.writeUTF(sSend);
String sReceive = dataInputStream.readUTF();
txtStringOutput.setText(sReceive);
17


} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(this, "Can't send to Server", "Error",
JOptionPane.INFORMATION_MESSAGE);
}
}

}
private void Connect() {
try {
socket = new Socket(Server.IP, Server.PORT);
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Server didn't open", "Error",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
}
4.Kết quả

18


III.
XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CHAT ROOM
CLIENT/SERVER HOẠT ĐỘNG THEO GIAO THỨC TCP/IP
1. Yêu cầu
- Chương trình Server mở cổng chờ nhận kết nối từ Client.
- Chương trình Client kết nối và thực hiện trao đổi với chương trình
Server
2. Thuật toán
- Client có giao diện chat room, có đặt nick name và chat với những ai connect đến
cùng địa chỉ và port. Server khi mở lên bắt đầu tiến hành nhận các thông tin từ
client, mỗi khi có client mới kết nối thì thêm vào danh sách. Khi có client gửi tin
lên server thì server trả kết quả về cho tất cả các client có trong danh sách.

3. Mã nguồn
3.1 Server
package server;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class ChatServerTCP {
private String dataStringFromClient;
private boolean isStarted;
private ServerSocket serverWithoutUI;
List<Client> clientList = new ArrayList<Client>();
public ChatServerTCP() {
super();
}
public void startServer() {
try {
serverWithoutUI = new ServerSocket(2808);
isStarted = true;
System.out.println("Server Started!");
while(isStarted)
{
19


Client st = new Client(serverWithoutUI.accept());
new Thread(st).start();

clientList.add(st);
}
} catch (IOException e) {
e.printStackTrace();
}
}
class Client implements Runnable {
private Socket s;
private DataInputStream dis;
private DataOutputStream dos;
private boolean isAcceptStarted = false;
public Client(Socket s)
{
this.s = s;
}
public void send(String str)
{
try {
dos.writeUTF(str);
} catch (IOException e) {}
}
@Override
public void run()
{
try {
System.out.println("Connect successed!!");
isAcceptStarted = true;
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
while(isAcceptStarted)

{
dataStringFromClient = dis.readUTF();
System.out.println(dataStringFromClient);
for(int index = 0; index < clientList.size();
index++)
{
20


Client tempClient =
clientList.get(index);
tempClient.send(dataStringFromClient);
}
}
} catch (Exception e) {
clientList.remove(this);
}
finally{
try {
if(s != null) s.close();
if(dis != null) dis.close();
if(dos != null) dos.close();
} catch (IOException e2) {
e2.printStackTrace();
}
}
}
}
public static void main(String[] args)
{

new ChatServerTCP().startServer();
}
}
3.2 Client
package client;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
21


import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class ChatClientTCP extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private Socket s;

private DataOutputStream socketOutputStream;
private DataInputStream socketInputStream;
private boolean bConnected = false;
private accept accept;
@SuppressWarnings("unused")
private Thread acceptThread;
boolean isConnected = false;
static String userName = "";
static boolean readyToSend = false;
private boolean connected;
private JLabel label;
static JTextField tf;
static JTextField tfServer, tfPort;
static JButton login, logout, sendMessage;
static JTextArea ta;
public ChatClientTCP()
{
JPanel northPanel = new JPanel(new GridLayout(3,1));
JPanel serverAndPort = new JPanel(new GridLayout(1,5, 1, 3));
tfServer = new JTextField("localhost");
tfPort = new JTextField("2808");
tfPort.setHorizontalAlignment(SwingConstants.RIGHT);
serverAndPort.add(new JLabel("Server Address: "));
serverAndPort.add(tfServer);
22


serverAndPort.add(new JLabel("Port Number: "));
serverAndPort.add(tfPort);
serverAndPort.add(new JLabel(""));

northPanel.add(serverAndPort);
label = new JLabel("Nhập tên và bấm login để vào phòng!",
SwingConstants.CENTER);
northPanel.add(label);
tf = new JTextField("Anonymous");
tf.setBackground(Color.WHITE);
northPanel.add(tf);
add(northPanel, BorderLayout.NORTH);
ta = new JTextArea("Chào mừng đến chat room!\n", 80, 80);
JPanel centerPanel = new JPanel(new GridLayout(1,1));
centerPanel.add(new JScrollPane(ta));
ta.setEditable(false);
add(centerPanel, BorderLayout.CENTER);
login = new JButton("Login");
login.addActionListener(this);
logout = new JButton("Logout");
logout.addActionListener(this);
logout.setEnabled(false);
sendMessage = new JButton("Send");
sendMessage.addActionListener(this);
sendMessage.setEnabled(false);
JPanel southPanel = new JPanel();
southPanel.add(login);
southPanel.add(logout);
southPanel.add(sendMessage);
add(southPanel, BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600, 600);
setVisible(true);
tf.requestFocus();

}
private void sendMessage() {
String tempStr;
23


tempStr = tf.getText();
try {
socketOutputStream.writeUTF(">> " + userName + ": " +
tempStr);
socketOutputStream.flush();
} catch (IOException e1) {
System.out.println("Can't output!!");
}
tf.setText("");
}
void connectionFailed() {
login.setEnabled(true);
logout.setEnabled(false);
sendMessage.setEnabled(false);
label.setText("Nhập tên và bấm login để vào phòng!");
tf.setText("Anonymous");
tfPort.setText("2808");
tfServer.setText("localhost");
tfServer.setEditable(false);
tfPort.setEditable(false);
tf.removeActionListener(this);
connected = false;
}
@Override

public void actionPerformed(ActionEvent arg0) {
Object o = arg0.getSource();
if (o == logout) {
try {
if(isConnected){
bConnected = false;
socketInputStream.close();
socketOutputStream.close();
s.close();
}
} catch (IOException e1) {
System.out.println("Doesn't connected!!");
}
24


connectionFailed();
return;
}
if (o == sendMessage || connected) {
System.out.println("sending");
sendMessage();
return;
}
if (o == login) {
userName = tf.getText().trim();
if(userName.length() == 0) return;
String server = tfServer.getText().trim();
if(server.length() == 0) return;
String portNumber = tfPort.getText().trim();

if(portNumber.length() == 0) return;
int port = 0;
try {
port = Integer.parseInt(portNumber);
}
catch(Exception en) {
return;
}
if (connected == false) {
try {
s = new Socket(server, port);
socketOutputStream = new
DataOutputStream(s.getOutputStream());
socketInputStream = new
DataInputStream(s.getInputStream());
isConnected = true;
bConnected = true;
accept = new accept(s);
Thread acceptThread = new Thread(accept);
acceptThread.start();
} catch (UnknownHostException e1) {
System.out.println("Miss Server!!");
} catch (IOException e1) {
System.out.println("Can't output!!");
}
25


×