java socket

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:07:11
package src;
import java.net.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class Server {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
try {
ServerSocket server = new ServerSocket(8000); // 创建服务器到解字
System.out.println("服务器启动完毕");
Socket socket = server.accept(); // 等待客户端连接
System.out.println("创建客户连接");
InputStream input = socket.getInputStream(); // 获取Socket输入
InputStreamReader isreader = new InputStreamReader(input);
BufferedReader reader = new BufferedReader(isreader);
while (true) {
String str = reader.readLine();
if(str.equals("exit")) // 如果接收到exit
break; // 则退出服务器
if(str.equals("Time"))
{
OutputStream os=socket.getOutputStream();
os.write(new SimpleDateFormat("

你要搞清楚flush方法是做什么的。让我告诉你吧,flush方法是用于“带缓冲的输出流”。“带缓冲的输出流”的意思是:你向磁盘文件写入数据时,数据不会立刻存入磁盘,而是先存入缓冲区,等缓冲区满了再一次将缓冲区的数据写入磁盘,缓冲区没满就不会写入,但有办法使缓冲区没满也立刻把数据送往磁盘,方法就是调用flush方法或者close方法,调用后缓冲区不管满没满,也将数据送往磁盘。
要注意的是OutputStream是“不带缓冲的输出流”,因此写入数据不经缓冲区,立刻送入磁盘,因此flush在这里也就派不上用场。“带缓冲的输出流”有BufferedOutputStream,我们可以利用BufferedOutputStream对象构造“带缓冲的输出流对象”,如:
FileOutputStream fos=new FileOutputStream("1.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
DataOutputStream dos=new DataOutputStream(bos);
如上3条语句,dos由bos构造,将bos链接到dos上,bos具有带缓冲的功能,因此dos也具有带缓冲的功能了。

1、建议从socket中得到输入输出流后不要随意关闭它,这样很容易造成阻塞。
2、OutputStream out = socket.getOutputStream();// 获取Socket输出
out.write("Time\n".getBytes());// 向服务器发送数据
后面加上out.flush();