網絡編程TCP協議

網絡編程TCP協議
課程大綱
一、 TCP程序概述
1、 TCP是一種可靠傳輸協議,是一種面向鏈接的協議。
2、 實現TCP,需要實現服務器端和客戶端,JavaAPI爲我們提供了java.net包,爲實現網絡應用程序提供類。
3、 ServerSocket:此類實現服務器端套接字,
4、 Socket:此類實現客戶端套接字(也可以叫套接字)
5、 Socket是網絡驅動層提供給應用程序編程的接口和一種機制。
二、 數據發送過程
1、
三、 數據接收過程
1、
四、 實現服務器端和客戶端程序
(1)、服務器端:
1、 服務器端:public class ServerSocket extends Object
2、 此類實現服務器端套接字,服務器端套接字等待請求通過網絡接入,他基於該請求執行某些操作,然後可能向請求者返回結果。
3、 ServerSocket(int port):創建綁定到特定端口的服務器套接字。
4、 Void serSo_Timeout(int timeout):通過制定超時值啓用/禁用So_TIMEOUT,以毫秒爲單位
5、 InetAddress getInetAddress():返回此服務器套接字的本地地址。
6、 Socket accept():偵聽並接受到此套接字的連接。
(2)、客戶端:
1、public class Socket extens Object
2、此類實現客戶端套接字,套接字是兩臺機器通信的端點。
3、Socket(String host,int port):創建一個流套接字並將其連接到指定主機上的指定端口。
4、InputStream getInputStream():返回此套接字的輸入流。
5、OutputStream getOutputStream():返回此套接字的輸出流。
6、void setSo_Timeout(int timeout):啓用/禁用帶有指定超時值得SO_TIMEOUT,以毫秒爲單位。

服務端代碼

package us.google;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
*
* @author chongrubujing
*
*/
public class ServerDemo {

public static void main(String[] args) {
    //創建一個服務器端的Socket
    try {
        ServerSocket ss = new ServerSocket(8888);
        System.out.println("服務器已經啓動,正在等待連接中。。。。。");
        Socket s = ss.accept();//等待客戶端連接,會阻塞
        String info = "親,您的寶貝已經發貨,請注意查收!";
        //構造 一個字符輸出流
        BufferedWriter bw  = new BufferedWriter(
                new OutputStreamWriter(s.getOutputStream()));
        bw.write(info);
        bw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

}

客戶端代碼

package us.google;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* TCP客戶端程序
* @author chongrubujing
*
*/
public class ClientDemo {

public static void main(String[] args) {
    //創建一個客戶端的Socket對象(IP/主機名,端口號)
    try {
        Socket s = new Socket("192.168.0.51",8888);
        System.out.println("與服務器連接成功");
        //構造一個字符輸入利於
        //s.getInputStream()返回此套接字的輸入流
        BufferedReader br = new BufferedReader(
                new InputStreamReader(s.getInputStream()));
        String info  = br.readLine();
        System.out.println(info);
        br.close();
        s.close();
    }catch(UnknownHostException e){
        e.printStackTrace();
    }catch (IOException e) {
        e.printStackTrace();
    }

}

}

發佈了163 篇原創文章 · 獲贊 18 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章