博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 利用套接字Socket实现简单的服务器与客户端通信
阅读量:5308 次
发布时间:2019-06-14

本文共 2505 字,大约阅读时间需要 8 分钟。

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

利用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(); } } }

 

转载于:https://www.cnblogs.com/JarvisChu/archive/2010/05/31/2752555.html

你可能感兴趣的文章
IntelliJ IDEA 添加类注释模板
查看>>
acdream.Bet(数学推导)
查看>>
Oracle层次查询
查看>>
vue调试工具之 vue-devtools的安装
查看>>
UCOS2_STM32F1移植详细过程(一)
查看>>
laravel的速查表
查看>>
5-24
查看>>
Javascript一些小细节
查看>>
Struct
查看>>
在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)
查看>>
Linux修改用户shell
查看>>
[译]我是怎么构建Node.js程序的
查看>>
suse 源的添加与删除,以及源地址
查看>>
56个 PHP 开发常用代码片段(上)
查看>>
maven安装与项目移植
查看>>
大数据告诉你互联网到底有多大?完全超出你想象!
查看>>
C语言输入日期计算是该年的第几天
查看>>
Caliburn v2 变更-模块化
查看>>
Python之路,Day3 - Python基础3
查看>>
实验 4 在分支循环结构中调用自定义函数
查看>>