Lập trình mạng với Java - giao thức TCP

anhtuank7c

Member
5/12/10
167
13
18
đề bài :
nhập 2 số a và b từ client, gửi lên server tính tổng 2 số đó rồi gửi lại kết quả về client, client in ra màn hình - dùng giao thức TCP.
mình mới làm xong, còn nóng hổi, post lên cho các bạn cùng tham khảo .
bài làm gồm 2 file :
Client.java
PHP:
/*
 * chuong trinh tinh tong 2 so kieu integer tu Client gui len server
 */

package LTM3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 *
 * @author Nguyen Anh Tuan
 */
public class Client {
    public static void main(String []args) throws IOException
    {
        // khoi tao 3 bien kieu String
        String a,b,tong;
        //tao socket de ket noi toi server
        Socket ClientSocket = new Socket("Localhost", 1234);
        //thong bao da ket noi thanh cong
        System.out.println("Connected to server");
        //tao luong nhap du lieu tu ban phim
        DataInputStream inFromUser = new DataInputStream(System.in);
        //tao luong nhan du lieu tu server
        DataInputStream inFromServer = new DataInputStream(ClientSocket.getInputStream());
        //tao luong gui du lieu len server
        DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream());
        // nhap lieu tu ban phim
        try{
            System.out.println("nhap vao so a :");
            a=inFromUser.readLine();
            System.out.println("nhap vao so b :");
             b=inFromUser.readLine();
            // gui len server
             outToServer.writeBytes(a+'\n');
            outToServer.writeBytes(b+'\n');
        }catch(UnknownHostException e)
        {
            System.err.println("Server Not Found");
            System.exit(1);
        }catch(IOException e)
        {
            System.err.println("Cannot make a connection");
            System.exit(1);
        }
        
        //nhan ve tu server
        tong=inFromServer.readLine();
        //in ra man hinh
        System.out.println("Tong 2 chu so a va b la :"+tong);
        //dong luong gui du lieu len server
        outToServer.close();
        //dong luong nhan du lieu tu server
        inFromServer.close();
        //dong socket client
        ClientSocket.close();
    }

}


Server.java
PHP:
/*
 * chuong trinh tinh tong 2 so kieu integer tu Client gui len server
 */

package LTM3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author Nguyen Anh Tuan
 */
public class Server {
    public static void main(String []args) throws IOException
    {
        String so1,so2,so3;
        int tong;
        // tao server socket
        ServerSocket server = new ServerSocket(1234);
        System.out.println("Server is now already");
        //tao 1 socket do ket noi tu client toi server
        Socket connectionSocket = server.accept();
        //tao luong nhan du lieu tu client
        DataInputStream inFromClient = new DataInputStream(connectionSocket.getInputStream());
        // tao luong gui du lieu toi client
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        // truyen du lieu tu client vao 2 bien so1 va so2
        so1 = inFromClient.readLine();
        so2 = inFromClient.readLine();
        //ep so1 va so2 tu kieu String sang kieu Integer
        int a = Integer.parseInt(so1);
        int b = Integer.parseInt(so2);
        //tinh tong a + b
        tong = a + b;
        //ep tong 2 so a+b sang kieu String
        so3 = String.valueOf(tong);
        //gui so3 ve client
        outToClient.writeBytes(so3+'\n');
        //dong luong nhan du lieu tu client
        inFromClient.close();
        //dong luong gui du lieu ve client
        outToClient.close();
        //dong server socket
        server.close();
    }

}
 
  • Like
Reactions: mydream
10/12/10
286
10
18
Ðề: Lập trình mạng với Java - giao thức TCP

Đệ nghĩ huynh nên có một bài hướng dẫn cụ thế hơn.
Đệ có một vài câu hỏi :D
1. Giao thức TCP, UDP là gì? hoạt động ra sao?
2. Socket, hiểu như nào? code như nào?
3. Để chạy cái ứng dụng trên có cần cofig gì ko?( server, client)​
 

Học Hỏi

CongdongJava Dev Group
26/12/10
56
0
0
Ðề: Lập trình mạng với Java - giao thức TCP

Đệ nghĩ huynh nên có một bài hướng dẫn cụ thế hơn.
Đệ có một vài câu hỏi :D
1. Giao thức TCP, UDP là gì? hoạt động ra sao?
2. Socket, hiểu như nào? code như nào?
3. Để chạy cái ứng dụng trên có cần cofig gì ko?( server, client)​
1 & 2 : cậu kiếm cuốn ebook program network cơ bản đọc sẽ hiểu :)
3 : không cần .
 

lighter

New Member
22/10/10
55
0
0
Ðề: Lập trình mạng với Java - giao thức TCP

anhtuank7c có thể hướng dẫn kỷ xíu nữa dùm em dc ko?
Em chưa hiểu !!
 

lighter

New Member
22/10/10
55
0
0
Ðề: Lập trình mạng với Java - giao thức TCP

ví dụ như là mình viết ở đâu, làm mục đích gì, và chạy ntn?
 

anhtuank7c

Member
5/12/10
167
13
18
Ðề: Lập trình mạng với Java - giao thức TCP

ví dụ như là mình viết ở đâu, làm mục đích gì, và chạy ntn?
câu hỏi của bạn : VIẾT Ở ĐÂU ?
ý cậu là viết cái file Server.java ở đâu, file Client.java ở đâu đúng ko.
hiện mình đang học về lập trình mạng, mình viết 2 file này và chạy 2 file này trên máy mình thôi, để ý cái đoạn "Localhost" ý :D.
mục đích là :
Client : nhập vào 2 số nguyên từ bàn phím, rồi gửi nó lên Server, chờ kết quả trả về từ Server và in nó ra màn hình , rồi đóng socket
Server : nhận 2 số nguyên từ Client gửi lên, thực hiện tính toán, rồi gửi kết quả cho Client rồi đóng socket.

Chạy nó rất đơn giản :
nếu cậu dùng netbean : mở project này ra, rồi click chuột phải vào Server.java rồi RUN , sau đó RUN file Client.java .
 

hoangtuongt6

New Member
4/3/11
2
0
0
Ðề: Lập trình mạng với Java - giao thức TCP

các ban pro trong cộng đồng java giup mình với
Mình có bài tập ltm về gửi và nhận mail khó quá viết hỏng có dc
các bạn giúp dùm với!
 

gjaigjai

New Member
15/9/11
2
0
0
Ðề: Lập trình mạng với Java - giao thức TCP

bài hay đấy
thanks nha!!!!!!!
 

van.duc0409

Member
12/9/11
39
0
6
Ðề: Lập trình mạng với Java - giao thức TCP

Mình thấy phần lớn trên mạng làm Socket toàn sử dụng cách đọc ghi là BufferedReader và PrintWrite còn bạn dùng DataInputStream và DataOutputStream. Bạn có thể nói rõ cho mình biết lợi ích của 2 cách đọc ghi này không:-/:-/
 

badboy3283

Active Member
20/10/11
295
89
28
District BT, HCM City
Ðề: Lập trình mạng với Java - giao thức TCP

Reader và PrintWrite là gửi và nhận data theo dạng chuổi thường dùng để gửi vào nhận message

Còn DataInputStream và DataOutputStream thì gửi và nhận data theo dạng byte, thường dùng để gửi file hay gửi chuổi cũng được...

Khi thao tác về mạng tốt nhất nên buffer data theo dạng byte rồi gửi đi sẽ nhanh và bảo mật..
 

thangvpvip

New Member
31/10/11
16
0
0
Ðề: Lập trình mạng với Java - giao thức TCP

đề bài :
nhập 2 số a và b từ client, gửi lên server tính tổng 2 số đó rồi gửi lại kết quả về client, client in ra màn hình - dùng giao thức TCP.
mình mới làm xong, còn nóng hổi, post lên cho các bạn cùng tham khảo .
bài làm gồm 2 file :
Client.java
PHP:
/*
 * chuong trinh tinh tong 2 so kieu integer tu Client gui len server
 */

package LTM3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 *
 * @author Nguyen Anh Tuan
 */
public class Client {
    public static void main(String []args) throws IOException
    {
        // khoi tao 3 bien kieu String
        String a,b,tong;
        //tao socket de ket noi toi server
        Socket ClientSocket = new Socket("Localhost", 1234);
        //thong bao da ket noi thanh cong
        System.out.println("Connected to server");
        //tao luong nhap du lieu tu ban phim
        DataInputStream inFromUser = new DataInputStream(System.in);
        //tao luong nhan du lieu tu server
        DataInputStream inFromServer = new DataInputStream(ClientSocket.getInputStream());
        //tao luong gui du lieu len server
        DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream());
        // nhap lieu tu ban phim
        try{
            System.out.println("nhap vao so a :");
            a=inFromUser.readLine();
            System.out.println("nhap vao so b :");
             b=inFromUser.readLine();
            // gui len server
             outToServer.writeBytes(a+'\n');
            outToServer.writeBytes(b+'\n');
        }catch(UnknownHostException e)
        {
            System.err.println("Server Not Found");
            System.exit(1);
        }catch(IOException e)
        {
            System.err.println("Cannot make a connection");
            System.exit(1);
        }
        
        //nhan ve tu server
        tong=inFromServer.readLine();
        //in ra man hinh
        System.out.println("Tong 2 chu so a va b la :"+tong);
        //dong luong gui du lieu len server
        outToServer.close();
        //dong luong nhan du lieu tu server
        inFromServer.close();
        //dong socket client
        ClientSocket.close();
    }

}


Server.java
PHP:
/*
 * chuong trinh tinh tong 2 so kieu integer tu Client gui len server
 */

package LTM3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author Nguyen Anh Tuan
 */
public class Server {
    public static void main(String []args) throws IOException
    {
        String so1,so2,so3;
        int tong;
        // tao server socket
        ServerSocket server = new ServerSocket(1234);
        System.out.println("Server is now already");
        //tao 1 socket do ket noi tu client toi server
        Socket connectionSocket = server.accept();
        //tao luong nhan du lieu tu client
        DataInputStream inFromClient = new DataInputStream(connectionSocket.getInputStream());
        // tao luong gui du lieu toi client
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        // truyen du lieu tu client vao 2 bien so1 va so2
        so1 = inFromClient.readLine();
        so2 = inFromClient.readLine();
        //ep so1 va so2 tu kieu String sang kieu Integer
        int a = Integer.parseInt(so1);
        int b = Integer.parseInt(so2);
        //tinh tong a + b
        tong = a + b;
        //ep tong 2 so a+b sang kieu String
        so3 = String.valueOf(tong);
        //gui so3 ve client
        outToClient.writeBytes(so3+'\n');
        //dong luong nhan du lieu tu client
        inFromClient.close();
        //dong luong gui du lieu ve client
        outToClient.close();
        //dong server socket
        server.close();
    }

}


Bạn ơi Mình nhờ bạn giúp mình bài tập này với. Cũng gần giống với bài này chỉ khác là Client Nhập 1 số từ bàn phím gửi sang cho Server, Server nhận số đó rồi chuyển thành chữ( Ví dụ: Nhận số 1 thì chuyển thành 'một', 2 thì chuyển thành ''hai"..., ) rồi gửi về cho Client. Client nhận và hiển thị lên màn hình. Nếu Client nhập ký tự khác số thì Server báo là "Không phải số"
Các bạn giúp mình với nha! Đây là đề ôn hết Môn Lập Trình Mạng! Thanks!!
 

blackboy171

New Member
9/3/11
4
0
1
Ðề: Lập trình mạng với Java - giao thức TCP

chayj thif nos ra la Server is now already
 

hoainam17101990

New Member
16/2/12
28
0
1
Ðề: Lập trình mạng với Java - giao thức TCP

đề bài :
nhập 2 số a và b từ client, gửi lên server tính tổng 2 số đó rồi gửi lại kết quả về client, client in ra màn hình - dùng giao thức TCP.
mình mới làm xong, còn nóng hổi, post lên cho các bạn cùng tham khảo .
bài làm gồm 2 file :
Client.java
PHP:
/*
 * chuong trinh tinh tong 2 so kieu integer tu Client gui len server
 */

package LTM3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 *
 * @author Nguyen Anh Tuan
 */
public class Client {
    public static void main(String []args) throws IOException
    {
        // khoi tao 3 bien kieu String
        String a,b,tong;
        //tao socket de ket noi toi server
        Socket ClientSocket = new Socket("Localhost", 1234);
        //thong bao da ket noi thanh cong
        System.out.println("Connected to server");
        //tao luong nhap du lieu tu ban phim
        DataInputStream inFromUser = new DataInputStream(System.in);
        //tao luong nhan du lieu tu server
        DataInputStream inFromServer = new DataInputStream(ClientSocket.getInputStream());
        //tao luong gui du lieu len server
        DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream());
        // nhap lieu tu ban phim
        try{
            System.out.println("nhap vao so a :");
            a=inFromUser.readLine();
            System.out.println("nhap vao so b :");
             b=inFromUser.readLine();
            // gui len server
             outToServer.writeBytes(a+'\n');
            outToServer.writeBytes(b+'\n');
        }catch(UnknownHostException e)
        {
            System.err.println("Server Not Found");
            System.exit(1);
        }catch(IOException e)
        {
            System.err.println("Cannot make a connection");
            System.exit(1);
        }
        
        //nhan ve tu server
        tong=inFromServer.readLine();
        //in ra man hinh
        System.out.println("Tong 2 chu so a va b la :"+tong);
        //dong luong gui du lieu len server
        outToServer.close();
        //dong luong nhan du lieu tu server
        inFromServer.close();
        //dong socket client
        ClientSocket.close();
    }

}


Server.java
PHP:
/*
 * chuong trinh tinh tong 2 so kieu integer tu Client gui len server
 */

package LTM3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author Nguyen Anh Tuan
 */
public class Server {
    public static void main(String []args) throws IOException
    {
        String so1,so2,so3;
        int tong;
        // tao server socket
        ServerSocket server = new ServerSocket(1234);
        System.out.println("Server is now already");
        //tao 1 socket do ket noi tu client toi server
        Socket connectionSocket = server.accept();
        //tao luong nhan du lieu tu client
        DataInputStream inFromClient = new DataInputStream(connectionSocket.getInputStream());
        // tao luong gui du lieu toi client
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        // truyen du lieu tu client vao 2 bien so1 va so2
        so1 = inFromClient.readLine();
        so2 = inFromClient.readLine();
        //ep so1 va so2 tu kieu String sang kieu Integer
        int a = Integer.parseInt(so1);
        int b = Integer.parseInt(so2);
        //tinh tong a + b
        tong = a + b;
        //ep tong 2 so a+b sang kieu String
        so3 = String.valueOf(tong);
        //gui so3 ve client
        outToClient.writeBytes(so3+'\n');
        //dong luong nhan du lieu tu client
        inFromClient.close();
        //dong luong gui du lieu ve client
        outToClient.close();
        //dong server socket
        server.close();
    }

}
có còn ai theo dõi luồng này nữa không ạ.Mình có 1 câu hỏi muốn hỏi chủ thớt,đó là ở đây bạn có thể phát triển lên multiThread được ko,nghĩa là sẽ có nhiều client gửi dữ liệu đến server để xử lý.Mình cũng đang tìm hiểu đến phần này,và gặp 1 lỗi là ko thê close được server sau khi client ngắt kết nối.nếu cần,mình có thể up code của mình lên cho mọi người xem.
Thân!
 

chienthan_ct

Member
7/8/12
45
1
8
31
Cho mình hỏi nữa.
nếu mình chuyển cái này qua giao diện, copy y chan, riêng cái server.java thì khi chạy nó báo lỗi là
Exception in thread "main" java.lang.NullPointerException
at packageServer.Server.main(Server.java:118)

Bạn nào biết chỗ này giúp mình với. Thanks
 

monday0rsunday

Active Member
21/10/11
512
93
28
Ðề: Lập trình mạng với Java - giao thức TCP

Reader và PrintWrite là gửi và nhận data theo dạng chuổi thường dùng để gửi vào nhận message

Còn DataInputStream và DataOutputStream thì gửi và nhận data theo dạng byte, thường dùng để gửi file hay gửi chuổi cũng được...

Khi thao tác về mạng tốt nhất nên buffer data theo dạng byte rồi gửi đi sẽ nhanh và bảo mật..
@@, khi đã TCP thì byte hết bạn ạ. Muốn bảo mật, bạn phải mã hóa trước, chứ ko phải cứ dùng Buff là nó giúp bảo mật
 

conuong_anmay

New Member
24/10/12
8
0
1
28
Bạn ơi, nếu mình không nhập từ bàn phím mà nhập từ textbox thì phải làm như thế náo?
 

SITUVN

Well-Known Member
25/2/12
965
262
63
Nhập từ bàn phím (giao diện console) và nhập từ textbox chỉ khác ở "console" thôi, có khác gì đâu.