Java实现简单的socket通信

2014-11-24 08:14:26 · 作者: · 浏览: 0

前言

首先,说一件无关的事情,萧鼎的诛仙2更新了,这一等就是一年啊,今天中午思考去阿里用神马花名的时候想起来google一下诛仙二,结果50多章都没看过,555,没忍住一下午全用来看小说了,罪过罪过
其次,就是今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完善了


代码

今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有package的类,不过最后问题基本都解决了,把代码贴出来供大家参考

server

package socket;

import java.io.*;
import java.net.*;

public class TcpServer {
    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(9091);
        try {
            Socket client = server.accept();
            try {
                BufferedReader input =
                        new BufferedReader(new InputStreamReader(client.getInputStream()));
                boolean flag = true;
                int count = 1;

                while (flag) {
                    System.out.println(客户端要开始发骚了,这是第 + count + 次!);
                    count++;
                    
                    String line = input.readLine();
                    System.out.println(客户端说: + line);
                    
                    if (line.equals(exit)) {
                        flag = false;
                        System.out.println(客户端不想玩了!);
                    } else {
                        System.out.println(客户端说:  + line);
                    }

                }
            } finally {
                client.close();
            }
            
        } finally {
            server.close();
        }
    }
}

client

package socket;

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class TcpClient {
    public static void main(String[] args) throws Exception {
        Socket client = new Socket(127.0.0.1, 9091);
        try {
            PrintWriter output =
                    new PrintWriter(client.getOutputStream(), true);
            Scanner cin = new Scanner(System.in);
            String words;

            while (cin.hasNext()) {
                words = cin.nextLine();

                output.println(words);

                System.out.println(写出了数据:  + words);
            }

            cin.close();
        } finally {
            client.close();
        }
    }
}