爱玺玺

爱玺玺的生活日记本。wx:lb87626

Tcp网络程序工作原理

使用telnet作为客户端程序程序服务器程序

telnet 192.168.1.104 8001

telnet 设置 set localecho 回显


需要使用BuffererRead类输出客户端发送的数据,不然打出一个字母点击回车就结束了连接


TcpServer.java


import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;


public class TcpServer{

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

ServerSocket ss=new ServerSocket(8001);//创建一个ServerSocket对象,端口使用8001监听

Socket s=ss.accept();//使用ServerSocket实例化的ss服务器对象的accpet方法等待客户机来连接,如果有客户机连接accpet会返回一个Socket类的对象已经建立了专线连接,如果没有连接会一直阻塞,后面的程序不会运行

   InputStream ips=s.getInputStream();//返回一个输入流对象

   OutputStream ops=s.getOutputStream();//返回一个输出流对象

   ops.write("welcome to jianhaozhan.cn".getBytes());//当客户端连接上服务器,服务器向客户端写入欢迎信息

  /*

   byte[] buf=new byte[1024];//服务器读取的数据存放在buf字节数组中

   int len=ips.read(buf);//ips读取对象已经读取的数据通过read()方法读出来存放到buf字节数组中,read方法返回实际读取的字节个数的int类型

   System.out.println(new String(buf,0,len));

   */

   BufferedReader br=new BufferedReader(new InputStreamReader(ips));//BufferedReader只能包装Reader,Reader可以包装字节流,最终目的存放到内存的一个缓冲区使用,现在数据已经存放到了BufferedRead对象br中

   System.out.println(br.readLine());//使用BufferedRead对象的readLine方法读出数据

   

   br.close();//关闭Buufer对象就关闭了字节对象

   //ips.close();//输入流对象关闭

   ops.close();//输出流对象关闭

   s.close();//关闭单独客户对象

   ss.close();//关闭ServerSocket对象

}

}


发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5