java套接字客户端时间间隔连接服务器_Java 利用套接字Socket实现简单的服务器与客户端通信...

本文介绍了如何使用Java的Socket和ServerSocket类建立一个简单的客户端-服务器通信系统。客户端发送'Time'命令获取服务器时间,或者发送'Exit'命令断开连接。服务器接收到命令后相应地返回当前时间或关闭连接。
摘要由CSDN通过智能技术生成

我们要实现的具体功能是:

利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。

客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送Exit命令,服务器端向客户端返回“Bye”后退出。

题目比较简单的,我们直接来看代码吧:

首先是服务器端的实现:

import java.net.ServerSocket;

import java.net.Socket;

import java.io.*;

import java.text.DateFormat;

import java.util.Date;//时间

//import java.util.Calendar;

public class Server {

public static void main(String args[]){

try{

ServerSocket server = new ServerSocket(11111);//创建服务器套接字

System.out.println("服务器启动完毕");

System.out.println("等待客户端连接...");

Socket socket = server.accept();//等待客户端连接

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获得客户端的输入流

//OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());//获得客户端输出流

PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);//获得客户端输出流)

if(socket.isConnected()){

System.out.println("客户端名称为"+socket.getInetAddress().getHostAddress()+" 连接成功!");

//out.write("连接成功/n");

out.println("连接成功");

}

while(true){

String str = reader.readLine();

if(str.equals("Time")){//客户端请求时间数据

Date date = new Date();

// Calendar cal = Calendar.getInstance();

System.out.println("客户端请求当前时间");

DateFormat format = DateFormat.getDateInstance();

//out.write(format.format(date));//格式化输出时间

out.println(format.format(date));

}

else if(str.equals("exit")){//退出

//out.write("bye");

out.println("bye");

System.out.println("连接断开");

break;

}

else{

System.out.println("数据:"+str);

}

}

}catch(IOException e){

e.printStackTrace();

}

}

}

配置好服务器端后,我们继续来编写客户端的程序:

import java.net.Socket;

import java.io.*;

public class Client {

public static void main(String args[]){

try{

Socket client = new Socket("localhost",11111);//创建客户端套接字

OutputStream out = client.getOutputStream();//获取输出流

BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));//获取输入流 获得服务器返回的数据

BufferedReader localMessage = new BufferedReader(new InputStreamReader(System.in));//接受客户端从键盘输入的信息

System.out.println("从服务器"+client.getRemoteSocketAddress()+"返回的消息:"+reader.readLine());

while(true){//从客户端向服务器传输数据

String message,str;

message = localMessage.readLine()+"/n";//从屏幕读取一行数据

//System.out.print(message);

out.write(message.getBytes());//传输给服务器

str = reader.readLine();

System.out.println("从服务器"+client.getRemoteSocketAddress()+"返回的消息:"+str);

if(str.equals("Bye")){//服务器传回 结束 数据

System.out.println("连接断开!");

break;

}

}

}catch(IOException e){

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值