TCP 实例

来源:互联网 发布:阿里云 招聘 安全 编辑:程序博客网 时间:2024/06/15 08:43

1、TCP服务端

package com.example;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class MyTcpServer {    public static void main(String [] args) throws Exception{        new TcpServer().listen();//创建TCPServer对象,并调用kisten()方法    }}//TCP服务端class TcpServer{    private static final int PORT=7788;//定义一个端口    public void listen() throws  Exception{ //定义一个listen方法,抛出异常        ServerSocket serverSocket=new ServerSocket(PORT);//创建ServerSocket对象        Socket client=serverSocket.accept();//调用ServerSocket的accept()方法接受数据        OutputStream os=client.getOutputStream(); //获取客户端的输出流        System.out.println("开始与客户端交互数据");        os.write(("Hello world").getBytes());        Thread.sleep(5000); //模拟执行其他功能占用时间        System.out.println("结束与客户端数据交互");        os.close();        client.close();    }}

2、TCP 客户端

package com.example;import java.io.InputStream;import java.net.InetAddress;import java.net.Socket;public class MyTcpClient {    public static void main(String [] args) throws  Exception{        new TcpClient().connect();    }}class TcpClient{    private  static final  int PORT = 7788; //服务端的端口号    public void connect () throws Exception{        //创建一个socket并链接到给出地址和端口号的计算机        Socket client=new Socket(InetAddress.getLocalHost(),PORT);        InputStream is=client.getInputStream(); //得到接收数据流        byte [] buf=new byte[1024];//定义1924个字节数组的缓冲区        int len=is.read(buf);//将数据读到缓冲区        System.out.println(new String(buf,0,len)); //将缓冲区中的数据输出        client.close(); //关闭socket对象,释放资源    }}

3、多线程tcpserver

package com.example;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class MyTcpThread {    public static void main(String [] args) throws  Exception{        new TcpServer().listen();//创建TcpServer对象,并调用listen()方法    }}//TCp服务端class TcpServer{    private static final int  PORT=7788; //定义一个静态端口号    public void listen() throws Exception{        //创建socket对象,监听指定的端口        ServerSocket serverSocket=new ServerSocket(PORT);        //使用while循环不停的接收客户端的发送请求        while(true){            //调用ServerSocket的accept()方法与客户建立链接            final Socket client=serverSocket.accept();            //下面的代码用于开创一个新的线程            new Thread(){              public void run(){                  OutputStream os;//定义一个输出流对象                  try{                      os=client.getOutputStream();//获取客户端的输出流                      System.out.println("开始与客户端交互数据");                      os.write(("Hello Word").getBytes());                      Thread.sleep(5000); //线程休眠                      System.out.println("结束与客户端交互");                      os.close(); //关闭输出流                      client.close(); //关闭socket 对象                  }catch(Exception e){                      e.printStackTrace();                  }              }             }.start();        }    }}

参考文档:
Java基础入门 传智博客高教产品研发部 

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。