TCP程序设计

客户端套接字Socket类

Socket client=new Socket("192.168.0.1",1100); //服务器的IP地址,可以是字符串或InetAddress对象,1100是服务器端口

Socket类常用方法:
getInputStream() 获取套接字输入流,返回InputStream对象
getOutputStream() 获取套接字输出流,返回OutputStream对象
isConnected() 查看套接字是否连接
close() 关闭套接字

服务器套接字ServerSocket类
ServerSocket server=new ServerSocket(1100); //1100是服务器开启的端口

ServerSocket类常用的方法:
accept() 等待客户端的连接,返回成功连接的Socket对象
getInetAddress() 返回此服务器套接字的本地地址
isClosed() 查看服务器套接字是否关闭
close() 关闭套接字


【案例】
创建两个Project,一个Server(服务器),一个Client(客户端),首先启动服务器,等待客户端访问

         

复制代码
public class Server {
    public static void main(String[] args) {
        ServerSocket server= null;//创建服务器套接字
        try {
            server = new ServerSocket(1100);
            System.out.println("服务器启动成功,等待客户端访问...");
            //等待客户端连接,服务器通过此行代码与客户端互通
            Socket client=server.accept();
            System.out.println("有客户端接入,客户端IP:"+client.getInetAddress());
//服务器从客户端接收的消息
            InputStream in=client.getInputStream();//输入流
            byte[] bt=new byte[1024];//创建字节数组,并指定大小
            int len=in.read(bt);//读入client字节流内容
            String data=new String(bt,0,len);//字节转字符
            System.out.println("客户端发来消息:"+data);
//服务器反馈给客户端的信息
            OutputStream out=client.getOutputStream();//输出流
            String message="我是服务器,欢迎访问";
            out.write(message.getBytes());//输出的内容,字符串转字节(字符数组)

            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
复制代码
复制代码
public class Client {
    public static void main(String[] args) {
        try {
            Socket client=new Socket("127.0.0.1",1100);//创建套接字,指定服务器地址、端口。有效则自动连接
            System.out.println("连接成功");
//客户端发给服务器的消息
            OutputStream out=client.getOutputStream();//输出流
            String message="我是客户端";
            out.write(message.getBytes());//输出的内容,字符串转字节(字符数组)
//客户端接收服务器反馈的信息
            InputStream in=client.getInputStream();//输入流
            byte[] bt=new byte[1024];//创建字节数组,并指定大小
            int len=in.read(bt);//读入client字节流内容
            String data=new String(bt,0,len);//字节转字符
            System.out.println("服务器反馈的消息:"+data);

            client.close();//关闭套接字
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
复制代码

 

posted @   夕西行  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示