TCP 实例
  HvTJUzsxOBtS 2023年11月25日 22 0


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基础入门 传智博客高教产品研发部 

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月17日   54   0   0 数据库JavaSQL
HvTJUzsxOBtS