Java 利用套接字Socket实现简单的服务器与客户端通信
我们要实现的具体功能是:
利用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.pr
相关文档:
在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......
最近公司碰到需要用图表的形式显示一些数据,我就开始到网上查询,查到了jfreechart和amcharts,这两者我都实现过了,jfreechart最后生成图片,但是图片效果不是我想要的,然后又研究amcharts 它的效果确实很好,而且官方网站上还有好些例子可供下载,网址是:www.amcharts.com
(想要完成一个amcharts图形需要swfobjects. ......
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,
我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。
总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。
你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不 ......
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.vicky.socket;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Vector;
/**
*
* @author Vicky
* 广播类
*/
public class BMana ......