基于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的简单的网络聊天程序