栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1.Socket和ServerSocket入门实例,实现单聊

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1.Socket和ServerSocket入门实例,实现单聊

Socket定义:

套接字(Socket)是一个抽象层,应用程序可以通过它发送或接受数据,可对其进行像文件一样的打开,读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址和端口的组合。可以理解为两台机器或进程间进行网络通信的端点,这个端点包括IP地址和端口号。
Socket和ServerSocket的区别就像其名字一样,简单的说ServerSocket作用在服务端,用以监听客户端的请求。Socket作用在客户端和服务端,用以发送和接受消息。就像上边所说的,它们都哟啊包含一个Ip地址和端口号

IO

简单说一下IO,IO常见的应用场景就是网络通信和读取文件等方面。IO分为字节流和字符流。字节既Byte,包含八位二进制数,一个二进制数就是1bit,中文名叫位。字符既一个字母或者一个汉字,一个字母由一个字节组成。而汉字根据编码的不同由2个或者3个组成。Java.io包如下

实战 1.首先创建两个类 Server和Client

Server.class

package com.yjn.learn;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


public class Server {
    public static void main(String[] args) {
        //定义默认的监听端口
        final int DEFAULT_PORT=8888;
        try {
            //创建ServerSocket监听8888端口
            ServerSocket serverSocket=new ServerSocket(DEFAULT_PORT);
            System.out.println("Server Socket Start... The Prot is "+DEFAULT_PORT);
            while (true){
                //一直监听改端口号
                //阻塞式监听,如果没有客户端请求就一直停留在这里
                Socket socket = serverSocket.accept();
                System.out.println("Client["+socket.getInetAddress()+"] Online");
                //接受消息
                BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                //发送消息
                BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                String msg;
                while ((msg=reader.readLine())!=null){
                    System.out.println("Client ["+socket.getInetAddress()+msg);
                    //服务端要发送的消息
                    writer.write("Server"+msg+"n");
                    writer.flush();
                    if("quit".equals(msg)){
                        System.out.println("Client ["+socket.getInetAddress()+"Offline");
                        break;
                    }
                }
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

Client.class

package com.yjn.learn;

import java.io.*;
import java.net.Socket;


public class Client {

    //客服端程序
    public static void main(String[] args) {
        //定义ip和端口号
        final String DEFAULT_SERVER_HOST = "127.0.0.1";
        final int DEFAULT_SERVER_PORT = 8888;
        try {
            //创建socket
            Socket socket = new Socket(DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT);
            //接受消息 从socket里获取一个连接
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //发送消息
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            //获取用户输入的消息
            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
            String msg;
            //循环输入
            while (true) {
                String inputMessage = input.readLine();
                writer.write(inputMessage + "n");
                writer.flush();
                msg = reader.readLine();
                System.out.println(msg);
                if ("quit".equals(inputMessage)){
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.然后运行两个类 打开终端


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号