用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

简单java服务器

2012-12-12 作者: 程序猿style举报

[java]代码库

import java.io.InputStream;
import java.io.OutputStream;
import java.net.*;
 
public class ChatServer {
 
    public void setUpServer(int port) {
        try {
            ServerSocket server = new ServerSocket(port);
            System.out.println("服务器创建成功" + port);
            // 让服务器进入等待状态:阻塞状态
            // 当有客户端连接上时,等待方法就会返回,返回一个代表与客户端连接的对象
            while (true) {
                Socket client = server.accept();
                System.out.println("正在有客户端访问" + client.getRemoteSocketAddress());
                // 调用处理连接对象的方法去处理连接对象
                processChat(client);
                // 从连接对象上得到输入输出流对象
                // OutputStream out=client.getOutputStream();
                // InputStream ins=client.getInputStream();
                //
                // String s="你好,欢迎来到javake\r\n";
                //
                // byte[] data=s.getBytes();//获取这个字符串的字节
                // out.write(data);//用输出对象发送数据
                // out.flush();//强制输出
                // int in=0;
                // while(in!=13)
                // {
                // in=ins.read();
                // System.out.println("读到的一个是"+in);
                // }
                // System.out.println("客户端按了回车,退出");
                //
                // client.close();//关闭与客户端的连接
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 处理连接对象,读取客户端发来的字符串,回送给客户端
     * 
     * 
     */
 
    private void processChat(Socket client) throws Exception {
        // 从连接对象上得到输入输出流对象
        OutputStream out = client.getOutputStream();
        InputStream ins = client.getInputStream();
 
        String s = "你好,欢迎来到服务器javake\r\n";
 
        byte[] data = s.getBytes();// 获取这个字符串的字节
        out.write(data);// 用输出对象发送数据
        out.flush();// 强制输出
        // 调用读取字符串的方法,从输入流中读取一个字符串
        String inputS = readString(ins);
        int in = 0;
        while (!inputS.equals("bye")) {
            System.out.println(" 客户端说" + inputS);
            s = "服务器收到" + inputS + "\r\n";
            data = s.getBytes();// 取得组成这个字符串的字节数组
            out.write(data);
            out.flush();
 
            inputS = readString(ins);// 读取客户端的下一次输入
        }
        s = "你好,欢迎再来 \r\n";
        data = s.getBytes();
        out.write(data);
        out.flush();
 
        client.close();// 关闭与客户端的连接
    }
 
    /**
     * 
     * 从输入流对象中读取字节,拼成一个字符串返回 如果读到一个字符值为13,则认为以前的是一个字符串 ins:输入 流对象
     * return:从流上(客户端发来的)读到字符串
     */
    private String readString(InputStream ins) throws Exception {
        // 创建一个字符串缓冲区
        StringBuffer stb = new StringBuffer();
        char c = 0;
        while (c != 13) {
            int i = ins.read();// 读取客户端发来的一个字节
            c = (char) i;// 将输入的字节转换为一个Char
            stb.append(c);// 将读取到的一个字符加到字符串缓冲区中
 
        }
        // 将读到的字节数组转换为字符串,并调用trim去掉尾部的空格
        String inputS = stb.toString().trim();
        return inputS;
    }
 
    public static void main(String[] args) {
        ChatServer cs = new ChatServer();
        cs.setUpServer(1234);
 
    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...