java实现的hello/hi的简单的网络聊天程序

coding

[toc]

socket基础知识

socket概念

socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务

socket通信过程

socket通信过程如下图所示

java socket编程

java的socket实现其实是通过调用操作系统的socket api实现的,下面图展示其调用关系

示例程序

Server.java

package com.zavier;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

public static void main(String[] args) {

try {

ServerSocket serverSocket=new ServerSocket(8888);

while(true){

Socket socket=serverSocket.accept();

Thread thread=new Thread(new Listener(socket));

thread.start();

}

}

catch (Exception e){

e.printStackTrace();

}

}

}

Listenr.java

package com.zavier;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.InetAddress;

import java.net.Socket;

public class Listener implements Runnable{

private Socket socket;

public Listener(Socket socket){

this.socket=socket;

}

@Override

public void run(){

InetAddress address = socket.getInetAddress();

int port=socket.getPort();

try{

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String data;

while((data = in.readLine()) != null){

System.out.println("["+address+":"+port+"]:"+data);

}

socket.close();

}

catch (Exception e){

System.out.println(e.getMessage());

}

}

}

Client.java

package com.zavier;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

public class Client {

public static void main(String[] args) {

String serverName = "127.0.0.1";

int port = 8888;

try{

Socket socket=new Socket(serverName,port);

//由系统标准输入设备构造BufferedReader对象

BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));

//由Socket对象得到输出流,并构造PrintWriter对象

PrintWriter os=new PrintWriter(socket.getOutputStream());

String readline;

//从系统标准输入读入一字符串

readline=sin.readLine();

while(!readline.equals("bye")) {

//将从系统标准输入读入的字符串输出到Server

os.println(readline);

//刷新输出流,使Server马上收到该字符串

os.flush();

readline=sin.readLine();

}

os.close();

socket.close();

}

catch (Exception e){

e.printStackTrace();

}

}

}

运行截图

参考链接

https://www.cnblogs.com/riacool/archive/2010/12/14/1905404.html https://blog.csdn.net/vipshop_fin_dev/article/details/102966081

以上是 java实现的hello/hi的简单的网络聊天程序 的全部内容, 来源链接: utcz.com/z/508525.html

回到顶部