二叉树排序 Netty variables controller jaxb react脚手架搭建 java并发编程视频 pmp教程 jq点击事件 matlab图像识别 完全去vm去虚拟化工具 matlab读入图片 数据库学习 python输出函数 二分查找python python连接mysql数据库 python正则匹配空格 python获取输入 java正则表达式 java实用教程 java集合转数组 java获取当前日期 java判断 linuxsleep decimalformat 0x8002801c c语言程序100例 英雄联盟体验服转换器 烧饼修改器打不开 git命令 mysql使用教程 骰子动态图 ps制作表格 数独软件 拼多多商家下载 vue定时器 winhex中文版下载 珊瑚版 cad文件 一键清除锁屏密码
当前位置: 首页 > 学习教程  > 编程语言

网络编程学习

2020/12/28 19:38:23 文章标签:

建立简单对话窗口 在了解网络编程前,我们需要了解一下套接字(Socket),套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程…

建立简单对话窗口

在了解网络编程前,我们需要了解一下套接字(Socket),套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。

Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的 Socket中,该 Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的 Socket中,使对方能够接收到这段信息。

套接字 = IP地址+端口号

建立对话窗口时,我们首先需要建立一个服务器端和一个客户端

1.客户端

public class Client {

    public static void main(String[] args) {
        
        try {
            //1.创建socket对象
            Socket client=new Socket("localhost",6666);
            //2.从键盘获取数据
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            //发送数据流
            DataOutputStream dos=new DataOutputStream(client.getOutputStream());
            //接收数据流
            DataInputStream dis=new DataInputStream(client.getInputStream());

            String str= br.readLine();
            dos.writeUTF(str);

            //接收数据
            System.out.println(dis.readUTF());

            CloseUtil.closeALL(dos,dis,client);
        } catch (IOException e) {
            e.printStackTrace();
        }
     }
}

其中Socket(“localhost”,6666),localhost 指的是本机的地址,或者直接写127.0.0.1 也可以代表本机地址。6666为端口号。
2.服务器端

public class Server {
    public static void main(String[] args) {
        System.out.println("-------------服务器已开启----------");
        try {
            //1.创建ServerSocket对象
            ServerSocket server=new ServerSocket(9999);
            //2.监听客户端是否连接
            Socket socket=server.accept();
            //3.获取输入流接收的数据
            DataInputStream dis=new DataInputStream(socket.getInputStream());
            //4.获取输出流的数据
            DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
            while(true) {

                String str = dis.readUTF();
                System.out.println("客户端发送数据为:" + str);
                //5.获取输出流响应客户端的请求
                dos.writeUTF("服务器已收到:" + str);
            }
            //6.关闭流
            CloseUtil.closeALL(dis,dos,socket);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.CloseUtil类

public class CloseUtil {
    public static  void closeALL(Closeable... able) {
        for(Closeable c:able) {
            if(c!=null)
            try {
                c.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

到这里,已经建立了一个每次只可以通讯一句话的窗口会话,通讯一次后程序就会结束。


本文链接: http://www.dtmao.cc/news_show_550334.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?