网络编程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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章