码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-12-30 23:25:35      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:使用   ring   net   程序   服务   tput   system   选择   NPU   

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网络聊天程序

标签:使用   ring   net   程序   服务   tput   system   选择   NPU   

原文地址:https://www.cnblogs.com/kxy940123/p/12121852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!