1. Trang chủ
  2. » Công Nghệ Thông Tin

tài liệu lập trình mạng

37 421 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 152,99 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

tài liệu lập trình mạng máy tính java mới nhất cho mọi người

Trang 1

Mục lục

Trang 2

Câu 2: Viết chương trình Client – Server thực hiện các chức năng: client gửi yêu cầu kết nối, client gửi lên xâu ký tự, server gửi về xâu đảo ngược.

public class TCPClient {

public static void main(String []args) throws IOException{

//Khai bao socket để làm việc với server qua địa chỉ IP và Cổng//Chú ý cổng phải trùng với khai báo trên server

Socket cs = new Socket("127.0.0.1", 1234);

//Khai báo 2 đối tượng để đọc và ghi dữ liệuDataInputStream din = new DataInputStream(cs.getInputStream());

DataOutputStream dout = new DataOutputStream(cs.getOutputStream());String strSend, strReturn;

try {

while (true) {

//Hộp thoại để nhập dữ liệu đầu ra là kiểu stringstrSend = JOptionPane.showInputDialog(null,"Please enter text to dialog for send to server:");

//gửi dữ liệu vào Stream để gửi lên Serverdout.writeUTF(strSend);

//Đọc dữ liệu từ StreamstrReturn = din.readUTF();

//Hộp thoại hiển thị dữ liệu

Trang 3

JOptionPane.showMessageDialog(null, "The text from Server: "+strReturn);

}} catch (Exception e) { cs.close();}

public class TCPServer {

public static void main (String [] args) throws IOException{

//Khai báo socket trên server với cổng 1234ServerSocket ss = new ServerSocket(1234);

//In thông báo ra màn hìnhSystem.out.println("Server is Open");

//Khai bao socket phía client chú ý "ss" là socket phía serverSocket cs = ss.accept();

//Khai báo 2 đối tượng để đọc ghi dữ liệu từ socketDataInputStream din = new DataInputStream(cs.getInputStream());

DataOutputStream dout = new DataOutputStream(cs.getOutputStream());String strReceive, strReturn;

try {

while (true) {

//Đọc dữ liệu trong Stream gửi từ Client

Trang 4

strReceive = din.readUTF();

//Sử dụng phương thức Reverse() để đảo ngược xâu ký tựstrReturn = new StringBuffer(strReceive).reverse().toString();//Server ghi dữ liệu vào stream để gửi cho Client

dout.writeUTF(strReturn);

}} catch (Exception e) {

//Đóng socket nếu gặp lỗics.close(); ss.close();

}}

public class BinaryFile {

private static DataInputStream din;

private static DataOutputStream dout;

private static Scanner sc;

Trang 5

public static void main (String [] args) throws FileNotFoundException,

if (kt==true) { kq += i + " "; }}

//Ghi du lieu vao file nhi phandout = new DataOutputStream(new FileOutputStream("Data.dat"));

dout.writeUTF(kq);

System.out.println("Write data success.");

//Doc du lieu tu file nhi phandin = new DataInputStream(new FileInputStream("Data.dat"));

readData = din.readUTF();

System.out.println("Data is: " + readData);

}

Trang 6

public class TextFile {

private static Scanner sc;

public static void main (String[] args) throws FileNotFoundException,

Trang 7

if (kt==true) { kq += i + " "; }}

//Khai bao đối tượng FileWriter để Ghi du lieu vao file textFileWriter fw = new FileWriter(new File("Data.txt"));

//Ghi dữ liệu của "kq" vào file Data.txtfw.write(kq);

fw.close();

System.out.println("Write data success.");

//Khai báo 2 đối tượng để đọc dữ lieu từ file textFileReader fr = new FileReader(new File("Data.txt"));

StringBuffer sb = new StringBuffer();

//Khai báo mảng để chứa dữ liệuchar ca[] = new char[2];

//Đọc dữ liệu khi nào đọc xong thì kết thúc vòng lặpwhile(fr.ready()){

int len = fr.read(ca);

sb.append(ca,0,len);

}fr.close();

System.out.println("Du lieu doc duoc la: " + sb);

}

}

Câu 4: Viết chương trình Client – Server, server đọc danh sách Username/Password

từ một file văn bản user.txt, client gửi yêu cầu kết nối, server kiểm tra

Username/Password nếu đúng thì cho phép kết nối Nếu sai thì gửi thông báo “Sai thông tin đăng nhập” về cho client và đóng kết nối (sử dụng multithread)

* phía Client

Trang 8

public class Client {

public static void main(String [] args){

try {

Socket cs = new Socket("127.0.0.1", 1234);

// PrintWriter out = new PrintWriter(socket.getOutputStream(),true);//BufferedReader in = new BufferedReader(new

InputStreamReader(socket.getInputStream()));

DataInputStream din = new DataInputStream(cs.getInputStream());DataOutputStream dout = new

DataOutputStream(cs.getOutputStream());

Scanner scanner = new Scanner(System.in);

String strSend = "", strReturn = "";

}

*phía Serve

Trang 9

public class Server {

public static void main (String [] args){

ServerSocket server = null;

while (true) {

Socket client = server.accept();

System.out.println("New Client connected " + client.getInetAddress().getHostAddress());

ClientHandler clientSock = new ClientHandler(client);

new Thread(clientSock).start();

}}

//tạo thread

public static class ClientHandler implements Runnable{

private final Socket cs;

public ClientHandler (Socket socket) { this.cs = socket; }public void run(){

DataInputStream din = null;

DataOutputStream dout = null;

String strReceive, strReturn;

while (true) {

strReceive = din.readUTF();

System.out.printf("Sent from the client: %s\n", strReceive);

Trang 10

strReturn = new StringBuffer(strReceive).reverse().toString();dout.writeUTF(strReturn);

}}

}

}

Câu 5: Viết chương trình tạo ra một đối tượng FileTWrite kế thừa đối đối tượng Thread (hoặc cài đặt giao diện Runable), cho phép viết một dãy số ngẫu nhiên vào tập tin Đối tượng FileTWriter có thuộc tính tên tập tin cần viết Viết hàm main tạo

ra 3 đối tượng viết 3 tập tin chạy ở 3 tiến trình đồng thời riêng biệt.

*lớp filewwirter để ghi tập tin

public class FileWrite extends Thread {

private static final int xsize = 10;

private int x;

private String name;

public FileWrite (String ten) {

this.name= ten;

}

public void nhap() {

try {

FileWriter fra= new FileWriter(name);

BufferedWriter bw = new BufferedWriter(fra);

Trang 11

Random rd=new Random();

public class Main5 {

public static void main(String[] args ) {

FileWrite f1 = new FileWrite( "tep1.txt" );

Trang 12

Câu 6: Viết chương trình tạo ra một đối tượng FileTReader kế thừa đối đối tượng Thread (hoặc cài đặt Runable), cho phép đọc nội dung một tập tin và hiển thị lên màn hình Đối tượng FileReader có thuộc tính tên tập tin cần mở Viết hàm main tạo ra 3 đối tượng đọc 3 tập tin chạy ở 3 tiến trình đồng thời riêng biệt

*class file Reader để đọc tập tin

public FileRead(String ten){ this.name = ten; }

public void load(){

try {

FileReader fvao = new FileReader(name);

BufferedReader br = new BufferedReader(fvao);

Trang 13

public class Main6 {

public static void main(String[] args ) {

FileRead f1 = new FileRead( "file1.txt" );

Tạo file wirter (bài 5) và class reader (bài 6) sau đó sử dụng hàm main để chạy

package Bai7;

import Bai5.FileWrite;

import Bai6.FileRead;

public class Main {

public static void main(String[] args) {

FileWrite fra = new FileWrite("test.txt");

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

Trang 14

* and open the template in the editor.

public class Address {

public static void main(String[] args) throws MalformedURLException, IOException { URL u = new URL("http://www.poly.edu/fall97/grad.php?q=idx#cs ");

System.out.println("The protocol is" + u.getProtocol());

System.out.println("The host is " + u.getHost());

System.out.println("The port is " + u.getPort());

System.out.println("The file is " + u.getFile());

URLConnection uc = u.openConnection();

String thisLine;

DataInputStream dis = new DataInputStream(u.openStream());

while ((thisLine = dis.readLine()) != null) {

Trang 15

System.out.println(thisLine);

}

uc.setDoOutput(true);

DataOutputStream dos;

dos = new DataOutputStream(uc.getOutputStream());

// dos.writeByte("Here is some data");

try {

if (args.length != 1) {

System.out.println("Cach su dung: java TimDCIP <Hostname>");

}

InetAddress host = InetAddress.getByName(u.toString());

String hostName = host.getHostName();

System.out.println("Host name:" + hostName);

System.out.println("Dia chi IP:" + host.getHostAddress());

InetAddress me = InetAddress.getLocalHost();

byte[] address = me.getAddress();

for (int i = 0; i < address.length; i++) {

Trang 16

CHUẨN HÓA CHUỖI

/*

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

* and open the template in the editor

public class ReadWrite {

public static void ChuanHoa(String s) {

String temp[] = s.split(" ");

for (int i = 0; i < s.length(); i++) {

Trang 17

}

public static void main(String[] args) throws IOException {

try {

String fileName = "D:\\VB.txt";

// Đọc tâp tin vào chuỗi sb

FileReader fr = new FileReader(fileName);

StringBuffer sb = new StringBuffer();

char ca[] = new char[5]; // Đọc mỗi lần tối đa 5 ký tự

String filename1 = "D:\\ChuanHoa.txt";

FileWriter fw = new FileWriter(fileName);

Trang 18

Socket s=new Socket(host,i);

System.out.println("Co mot server dang

hoat dong tren cong:"+i);

} catch(UnknownHostException e){

System.err.println(e);

} catch(IOException e){

System.err.println(e);

} }

Ví dụ: Cài đặt một server daytime

import java.net.*;

import java.io.*;

import java.util.Date;

public class daytimeServer{

public final static int daytimePort =13;

public static void main(String[]args)

{

ServerSocket theServer;

Socket con;

Trang 20

Socket s=new Socket(hostname,2007);

br=newBufferedReader(new InputStreamReader(s.getInputStream())); BufferedReader user;

user=new BufferedReader(new InputStreamReader(System.in));

Trang 21

Trong phần dưới đây chúng ta sẽ xem xét cách tiến hành cài đặt một chương trình client/server đa tuyến đoạn

Chương trình phía server

import java.io.*;

import java.net.*;

class EchoServe extends Thread

{

private Socket socket;

private BufferedReader in;

private PrintWriter out;

public EchoServe (Socket s) throws IOException

// Nếu bất kỳ lời gọi nào ở trên đưa ra ngoại lệ

// thì chương trình gọi có trách nhiệm đóng socket Ngược lại tuyến đoạn sẽ

Trang 22

static int PORT=0;

public static void main(String[] args) throws IOException

// Tạo một đối tượng Server Socket

ServerSocket s = new ServerSocket(PORT);

InetAddress addrs= InetAddress.getLocalHost();

System.out.println("TCP/Server running on : "+ addrs +" ,Port

"+s.getLocalPort());

try {

while(true) {

// Phong tỏa cho tới khi có một liên kết đến

Socket socket = s.accept();

try {

new EchoServe(socket);

Trang 23

// Tạo một tuyến đoạn quản lý riêng từng liên kết } catch(IOException e) {

InetAddress addr = InetAddress.getByName(args[0]);

Socket socket = new Socket(addr, Integer.parseInt(args[1]));

try {

System.out.println("socket = " + socket);

BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream()));

// Output is automatically flushed by PrintWriter:

PrintWriter out =new PrintWriter(new BufferedWriter(

new OutputStreamWriter(socket.getOutputStream())),true);

// Đọc dòng ký tự từ bàn phím

DataInputStream myinput = new DataInputStream(new

Trang 24

try

{

for(;;){

System.out.println("Type anything followed by RETURN, or Exit

to terminate the program.");

String strin=myinput.readLine();

// Quit if the user typed ctrl+D

if (strin.equals("exit")) break;

else

out.println(strin); // Send the message

String strout = in.readLine(); // Recive it back

if ( strin.length()==strout.length())

{ // Compare Both Strings System.out.println("Received: "+strout);

} else System.out.println("Echo bad string unequal"+ strout); } // of for ;;

}catch (IOException e){

Trang 25

String fileName= "C:\\TestB.txt" ;

// Phát sinh và xuất mảng ngẫu nhiên

byte[]a=new byte[10];

System.out.print( "Du lieu phat sinh: " );

for(int i=0;i<a.length;i++)

// Ghi mảng a vào tập tin

FileOutputStream fo=new FileOutputStream(fileName);

fo.write(a);

fo.close();

// Đọc tập tin vào mảng b

FileInputStream fi=new FileInputStream (fileName);

byte[]b= new byte[fi.available()];

fi.read(b);

fi.close();

// Xuất mảng b

System.out.print( "Du lieu doc duoc : " );

for(int i=0;i<b.length;i++)

{

System.out.print(b[i]+ " " );

}

Trang 26

Kết quả thực thi (các con số sẽ khác nhau với mỗi lần chạy):

Du lieu phat sinh: 4 14 0 16 2 19 10 9 9 15

Du lieu doc duoc : 4 14 0 16 2 19 10 9 9 15

Press any key to continue

Ví dụ về luồng mảng: Tạo một mảng gồm 100 byte rồi gắn vào mảng này một luồng ByteArrayInputStream để lấy dữ liệu ra.

byte[] b = new byte[100];

for(byte i=0;i<b.length;i++) b[i]=i;

Ví dụ luồng viết mảng: Viết chương trình tạo lập một luồng xuất mảng

(ByteArrayOutputStream) 100 byte Ghi vào luồng xuất mảng 100 phần tử từ 0 đến

99 Đổ dữ liệu từ luồng xuất mảng vào mảng b In dữ liệu từ mảng b ra màn hình.

Trang 27

//Tao mot luong xuat mang 100 byte

ByteArrayOutputStream os = new ByteArrayOutputStream(100);

//Ghi du lieu vao luong

for(byte i=0;i<100;i++) os.write(i);

//Doc du lieu tu luong vao mang

PipedInputStream pi= new PipedInputStream();

PipedOutputStream po= new PipedOutputStream(pi);

// Ghi các số nguyên ngẫu nhiên bằng PipedOutputStream

System.out.print( "Du lieu ghi duoc: " );

for(int i=0;i<10;i++)

// Đọc các số nguyên từ PipedOutputStream bằng PipedInputStream

System.out.print( "Du lieu doc duoc: " );

while (pi.available()>0)

Trang 28

Dùng file reader và file writer:

String fileName= "C:\\TestC.txt" ;

String s= "Hello File Reader/Writer!" ;

System.out.println( "Du lieu ban dau : " +s);

// Ghi s vào tập tin

FileWriter fw=new FileWriter(fileName);

fw.write(s);

fw.close();

// Đọc tâp tin vào chuỗi sb

FileReader fr=new FileReader(fileName);

StringBuffer sb=new StringBuffer();

char ca[]=new char[5]; // Đọc mỗi lần tối đa 5 ký tự

Du lieu ban dau : Hello File Reader/Writer!

Du lieu doc duoc : Hello File Reader/Writer!

Press any key to continue

Trang 29

Dùng piped reader và piped writer:

PipedReader pr=new PipedReader();

PipedWriter pw=new PipedWriter(pr);

// PipedWriter gởi dữ liệu

String s= "Hello Piped Reader/Writer!" ;

System.out.println( "Du lieu ghi : " +s);

pw.write(s);

pw.close();

// PipedReader nhận dữ liệu

StringBuffer sb=new StringBuffer();

char ca[]=new char[5]; // Đọc mỗi lần tối đa 5 ký tự

Du lieu ghi : Hello Piped Reader/Writer!

Du lieu doc duoc: Hello Piped Reader/Writer!

Ví dụ: đọc/ghi các biến trên tập tin

String name= "C:\\TestD.txt" ;

Trang 30

boolean b=fi.readBoolean();

int i=fi.readInt();

float f=fi.readFloat();

fo.close();

// Xuất dữ liệu đọc được ra màn hình

System.out.println( "Du lieu doc duoc: " );

String fileName= "C:\\TestC.txt" ;

String s= "Hello Buffered File Reader/Writer!" ;

System.out.println( "Du lieu ban dau : " +s);

// Ghi s vào tập tin

BufferedWriter bw=new BufferedWriter(new FileWriter(fileName));

bw.write(s);

bw.close();

// Đọc tâp tin vào chuỗi sb

BufferedReader br=new BufferedReader(new FileReader(fileName));

StringBuffer sb=new StringBuffer();

char ca[]=new char[5]; // Đọc mỗi lần tối đa 5 ký tự

Ngày đăng: 24/08/2020, 09:58

HÌNH ẢNH LIÊN QUAN

//Xuất dữ liệu đọc được ra màn hình System.out.println(&#34;Du lieu doc duoc: &#34;); System.out.println(String.valueOf(b)); System.out.println(i); - tài liệu lập trình mạng
u ất dữ liệu đọc được ra màn hình System.out.println(&#34;Du lieu doc duoc: &#34;); System.out.println(String.valueOf(b)); System.out.println(i); (Trang 30)
//Đọc các số và xuất ra màn hình - tài liệu lập trình mạng
c các số và xuất ra màn hình (Trang 31)

TỪ KHÓA LIÊN QUAN

w