初探互连网编制程序–TCP套接字编制程序演示

明天看了一下《计算机网络:自顶向下方法》,相当于总括机互联网的讲义的应用层一章,决定完成以下后边的Java
C/S应用程序的例证,用来演示TCP和UDP套接字编制程序。

程序流程如下:

1.一台湾游客户机从其规范输入(键盘)读入一行字符,并透过其套接字将该行发送到服务器。

2.服务器从其连接套接字读取一行字符。

3.服务器将该行字符转换到大写。

4.服务器将修改后的字符串(行)通过连接套接字再发回给客户机。

5.客户机从其套接字中读取修改后的行,然后将该行在其正式输出(监视器)上打字与印刷出来。

 

上面是应用程序客户机端的代码:

TCPClient.java

import java.io.*;
import java.net.*;
class TCPClient {
    public static void main(String[] argc) throws Exception
    {
        String sentence,modifiedsentence;       //定义两个字符串,一个是标准输入的,另一个是服务器返回的已经处理的
        BufferedReader inFromUser = 
              new BufferedReader(new InputStreamReader(System.in));  //创建BufferedReader流对象来接受键盘输入
        Socket clientSocket = 
              new Socket("hostname",6789);  //创建类型为Socket的clientSocket对象,发起客户机与服务器之间的TCP连接(hostname填服务器主机名,如果用本机做服务器,则填本机名,hostname(主机名)可以在网络或我的电脑中查看
        DataOutputStream outToServer = 
              new DataOutputStream(clientSocket.getOutputStream());  //创建连接到套接字的流对象,提供了到套接字的输出
        BufferedReader inFromServer = 
              new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));  //创建连接到套接字的流对象,提供了来自套接字的输入
        sentence = inFromUser.readLine();    //读入键盘输入的字符串
        outToServer.writeBytes(sentence + '\n');  //加上换行符发送到outToServer流中
        modifiedsentence = inFromServer.readLine();  //接受返回的字符串
        System.out.println("FROM SERVER: " + modifiedsentence);  //打印结果
        clientSocket.close();    //关闭TCP连接
    }
}

 

上边看一下劳务器端的主次:

Java,TCPServer.java

import java.io.*;
import java.net.*;

class TCPServer {
    public static void main(String[] argc) throws Exception
    {
        String clientSentence,capedSentence;
        ServerSocket welcomeSocket = 
                 new ServerSocket(6789); //创建一个类型为ServerSocket的welcomeSocket对象,在6789端口上监听客户机的“敲门声”
        while(true)  //持续监听
        {
            Socket connectionSocket = 
                 welcomeSocket.accept();   //当客户机“敲门”时,创建一个连接套接字connectionSocket,使用6789号端口,TCP此时在客户端和服务器间建立了一条虚拟管道,双方可以通过这条管道传输数据(字节)
            BufferedReader inFromClient = 
                 new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));  //创建流对象接受客户机发来的字符串
            DataOutputStream outToClient = 
                 new DataOutputStream(connectionSocket.getOutputStream()); //创建要发回给客户机的流对象
            clientSentence = inFromClient.readLine();   //读取客户机发来的信息
            capedSentence = clientSentence.toUpperCase() + '\n';  //将其变为大写,加上回车符
            outToClient.writeBytes(capedSentence);    //发回给客户机
        }
    }
}

 

运营结果:

Java 1

 

相关文章