知识大全 一个Java 的 Socket 服务器和客户端通信的例子
Posted 知
篇首语:须知少年凌云志,曾许人间第一流。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个Java 的 Socket 服务器和客户端通信的例子相关的知识,希望对你有一定的参考价值。
一个Java 的 Socket 服务器和客户端通信的例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一个 HelloWord 级别的 Java Socket 通信的例子 通讯过程
先启动 Server 端 进入一个死循环以便一直监听某端口是否有连接请求 然后运行 Client 端 客户端发出连接请求 服务端监听到这次请求后向客户端发回接受消息 连接建立 启动一个线程去处理这次请求 然后继续死循环监听其他请求 客户端输入字符串后按回车键 向服务器发送数据 服务器读取数据后回复客户端数据 这次请求处理完毕 启动的线程消亡 如果客户端接收到 OK 之外的返回数据 会再次发送连接请求并发送数据 服务器会为这次连接再次启动一个线程来进行响应…直到当客户端接收到的返回数据为 OK 时 客户端退出
服务端源代码
[java] view plaincopyprint?
package defonds socket begin;
import java io BufferedReader;
import java io DataInputStream;
import java io DataOutputStream;
import java io InputStreamReader;
import ServerSocket;
import Socket;
public class Server
public static final int PORT = ;//监听的端口号
public static void main(String[] args)
System out println( 服务器启动…\\n )
Server server = new Server()
server init()
public void init()
try
ServerSocket serverSocket = new ServerSocket(PORT)
while (true)
// 一旦有堵塞 则表示服务器与客户端获得了连接
Socket client = serverSocket accept()
// 处理这次连接
new HandlerThread(client)
catch (Exception e)
System out println( 服务器异常 + e getMessage())
private class HandlerThread implements Runnable
private Socket socket;
public HandlerThread(Socket client)
socket = client;
new Thread(this) start()
public void run()
try
// 读取客户端数据
DataInputStream input = new DataInputStream(socket getInputStream())
String clientInputStr = input readUTF() //这里要注意和客户端输出流的写方法对应 否则会抛 EOFException
// 处理客户端数据
System out println( 客户端发过来的内容 + clientInputStr)
// 向客户端回复信息
DataOutputStream out = new DataOutputStream(socket getOutputStream())
System out print( 请输入 \\t )
// 发送键盘输入的一行
String s = new BufferedReader(new InputStreamReader(System in)) readLine()
out writeUTF(s)
out close()
input close()
catch (Exception e)
System out println( 服务器 run 异常 + e getMessage())
finally
if (socket != null)
try
socket close()
catch (Exception e)
socket = null;
System out println( 服务端 finally 异常 + e getMessage())
package defonds socket begin;
import java io BufferedReader;
import java io DataInputStream;
import java io DataOutputStream;
import java io InputStreamReader;
import ServerSocket;
import Socket;
public class Server
public static final int PORT = ;//监听的端口号
public static void main(String[] args)
System out println( 服务器启动…\\n )
Server server = new Server()
server init()
public void init()
try
ServerSocket serverSocket = new ServerSocket(PORT)
while (true)
// 一旦有堵塞 则表示服务器与客户端获得了连接
Socket client = serverSocket accept()
// 处理这次连接
new HandlerThread(client)
catch (Exception e)
System out println( 服务器异常 + e getMessage())
private class HandlerThread implements Runnable
private Socket socket;
public HandlerThread(Socket client)
socket = client;
new Thread(this) start()
public void run()
try
// 读取客户端数据
DataInputStream input = new DataInputStream(socket getInputStream())
String clientInputStr = input readUTF() //这里要注意和客户端输出流的写方法对应 否则会抛 EOFException
// 处理客户端数据
System out println( 客户端发过来的内容 + clientInputStr)
// 向客户端回复信息
DataOutputStream out = new DataOutputStream(socket getOutputStream())
System out print( 请输入 \\t )
// 发送键盘输入的一行
String s = new BufferedReader(new InputStreamReader(System in)) readLine()
out writeUTF(s)
out close()
input close()
catch (Exception e)
System out println( 服务器 run 异常 + e getMessage())
finally
if (socket != null)
try
socket close()
catch (Exception e)
socket = null;
System out println( 服务端 finally 异常 + e getMessage())
客户端源代码
[java] view plaincopyprint?
package defonds socket begin;
import java io BufferedReader;
import java io DataInputStream;
import java io DataOutputStream;
import java io IOException;
import java io InputStreamReader;
import Socket;
public class Client
public static final String IP_ADDR = localhost ;//服务器地址
public static final int PORT = ;//服务器端口号
public static void main(String[] args)
System out println( 客户端启动… )
System out println( 当接收到服务器端字符为 \\ OK\\ 的时候 客户端将终止\\n )
while (true)
Socket socket = null;
try
//创建一个流套接字并将其连接到指定主机上的指定端口号
socket = new Socket(IP_ADDR PORT)
//读取服务器端数据
DataInputStream input = new DataInputStream(socket getInputStream())
//向服务器端发送数据
DataOutputStream out = new DataOutputStream(socket getOutputStream())
System out print( 请输入 \\t )
String str = new BufferedReader(new InputStreamReader(System in)) readLine()
out writeUTF(str)
String ret = input readUTF()
System out println( 服务器端返回过来的是 + ret)
// 如接收到 OK 则断开连接
if ( OK equals(ret))
System out println( 客户端将关闭连接 )
Thread sleep( )
break;
out close()
input close()
catch (Exception e)
System out println( 客户端异常 + e getMessage())
finally
if (socket != null)
try
socket close()
catch (IOException e)
socket = null;
System out println( 客户端 finally 异常 + e getMessage())
package defonds socket begin;
import java io BufferedReader;
import java io DataInputStream;
import java io DataOutputStream;
import java io IOException;
import java io InputStreamReader;
import Socket;
public class Client
public static final String IP_ADDR = localhost ;//服务器地址
public static final int PORT = ;//服务器端口号
public static void main(String[] args)
System out println( 客户端启动… )
System out println( 当接收到服务器端字符为 \\ OK\\ 的时候 客户端将终止\\n )
while (true)
Socket socket = null;
try
//创建一个流套接字并将其连接到指定主机上的指定端口号
socket = new Socket(IP_ADDR PORT)
//读取服务器端数据
DataInputStream input = new DataInputStream(socket getInputStream())
//向服务器端发送数据
DataOutputStream out = new DataOutputStream(socket getOutputStream())
System out print( 请输入 \\t )
String str = new BufferedReader(new InputStreamReader(System in)) readLine()
out writeUTF(str)
String ret = input readUTF()
System out println( 服务器端返回过来的是 + ret)
// 如接收到 OK 则断开连接
if ( OK equals(ret))
System out println( 客户端将关闭连接 )
Thread sleep( )
break;
out close()
input close()
catch (Exception e)
System out println( 客户端异常 + e getMessage())
finally
if (socket != null)
try
socket close()
catch (IOException e)
socket = null;
System out println( 客户端 finally 异常 + e getMessage())
cha138/Article/program/Java/hx/201311/25568
相关参考