基于Java的hello/hi网络聊天程序

Posted kxy940123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Java的hello/hi网络聊天程序相关的知识,希望对你有一定的参考价值。

Socket(套接字)是一种独立于具体协议的网络编程接口,在OSI模型中位于会话层和传输层之间。根据其使用方式可将套接字分为主动套接字和被动套接字,被动套接字指的是等待传入连接的套接字(如,服务器套接字),主动套接字指的是发起连接的套接字(如,客户端套接字)。以下是一个基于Java的Socket类编写的hello/hi网络程序。

Client端代码:

技术图片
import java.net.*;
import java.io.*;

public class ChatClient {
    
    public static void main(String[] args) throws IOException{
        Socket socket = new Socket("127.0.0.1",2333);
        BufferedReader in = 
                new BufferedReader(
                    new InputStreamReader(
                        socket.getInputStream())); 
        PrintWriter out =
            new PrintWriter(
                new BufferedWriter(
                        new OutputStreamWriter(
                                socket.getOutputStream())),true);
        out.println("hello");
        System.out.println("client: hello");
        String str = in.readLine();
        System.out.println("server: "+str);
        socket.close();
    }
    
}
技术图片

Server端代码:

技术图片
import java.net.*;
import java.io.*;

public class ChatServer {
    
    public static void main(String[] args) throws IOException{
        ServerSocket s = new ServerSocket(2333);
        Socket socket = s.accept();
        BufferedReader in = 
            new BufferedReader(
                new InputStreamReader(
                    socket.getInputStream()));
        PrintWriter out = 
            new PrintWriter(
                new BufferedWriter(
                    new OutputStreamWriter(
                        socket.getOutputStream())),true);
        while(true) {
            String str = in.readLine();
            if(str.equals("hello")) {
                out.println("hi");
                break;
            }
        }
        socket.close();
        s.close();
    }
    
}
技术图片

  Client端实例化一个Socket对象,由于该程序是在本地进行测试,故设定ip地址为127.0.0.1,并选取一个未被占用的port,此处选择2333。然后通过PrintWriter向Socket的OutputStream中写入"hello"传输给Server端,通过Socket的getInputStream()方法,接收Server端发来的信息。Server端先注册一个ServerSocket,并设定port为2333,然后创建1个Socket,使用其accept()方法与Client端建立连接,通过Socket的getInputStream()方法,接收Client端发来的信息,若收到信息,且信息内容为"hello",通过PrintWriter向Socket的OutputStream中写入"hi"传输给Client端。Client端同样通过Socket的getInputStream()方法,接收到Server端发来的"hi"。最终打印结果如下:

  client: hello
  server: hi

  以上便是Java网络编程中Socket类的简单用法,若要实现并发,则需要使用Thread。

以上是关于基于Java的hello/hi网络聊天程序的主要内容,如果未能解决你的问题,请参考以下文章

利用java的Socket实现一个简单hello/hi聊天程序

基于Python完成一个hello/hi的简单的网络聊天程序

java实现hello/hi的简单的网络聊天程序与ServerSocket调用栈跟踪

Java实现一个hello/hi的简单的网络聊天程序

一个hello/hi的简单的网络聊天程序

JAVA-hello/hi的简单的网络聊天程序