`
hewusheng
  • 浏览: 5403 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

写了一个javaSocket通信的例子,比较容易懂,主要是TCP协议的。下面是服务端的代码

阅读更多
Java综合 .

写了一个javaSocket通信的例子,比较容易懂,主要是TCP协议的。下面是服务端的代码



Java代码 复制代码 收藏代码
1.import java.io.IOException; 
2.import java.net.InetAddress; 
3.import java.net.Socket; 
4. 
5.public class ServerSocket { 
6. 
7.    public static void main(String[] args) { 
8.        beginSocket(); 
9.    } 
10.     
11.    public static void beginSocket(){ 
12.        try { 
13.            java.net.ServerSocket serverSocket=new java.net.ServerSocket(3456); 
14.            InetAddress inta=serverSocket.getInetAddress().getLocalHost(); 
15.            System.out.println(inta.getHostAddress()); 
16.            while(true){ 
17.                Socket socket=serverSocket.accept(); 
18.                new HelloMessage(socket); 
19.            } 
20.        } catch (IOException e) { 
21.            e.printStackTrace(); 
22.        } 
23.    } 
24.} 


为了提高并发时的处理效率,对于每个请求,系统都新建一个线程处理。



Java代码 复制代码 收藏代码
1.import java.io.BufferedReader; 
2.import java.io.InputStreamReader; 
3.import java.io.PrintWriter; 
4.import java.net.Socket; 
5. 
6.public class HelloMessage extends Thread { 
7.    private Socket socket_ = null; 
8.    public HelloMessage(Socket socket) { 
9.        this.socket_ = socket; 
10.        this.start(); 
11.    } 
12. 
13.    public void run() { 
14.        try { 
15.            BufferedReader bReader = new BufferedReader(new InputStreamReader( 
16.                    this.socket_.getInputStream())); 
17.            PrintWriter pWriter = new PrintWriter(this.socket_ 
18.                    .getOutputStream()); 
19.            String requestStr = bReader.readLine(); 
20.            if (requestStr != null && !"".equals(requestStr)) { 
21.                if (requestStr.equals("java")) { 
22.                    pWriter.println("your write is java"); 
23.                } 
24.                if (requestStr.equals(".net")) { 
25.                    pWriter.println("your write is .net"); 
26.                } 
27.                if (requestStr.equals("php")) { 
28.                    pWriter.println("your write is php"); 
29.                } 
30.                if (requestStr.equals("end")) { 
31.                    pWriter.println("your write is end"); 
32.         
33.                }else{ 
34.                    pWriter.println("your write is other"); 
35.                } 
36.            }else{ 
37.                pWriter.println("your write is null"); 
38.            } 
39.            pWriter.flush(); 
40.            pWriter.close(); 
41.            bReader.close(); 
42.            this.socket_.close(); 
43.        } catch (Exception e) { 
44.            e.printStackTrace(); 
45.        } 
46. 
47.    } 
48.} 


然后是客户端的代码。



Java代码 复制代码 收藏代码
1.import java.io.BufferedReader; 
2.import java.io.IOException; 
3.import java.io.InputStreamReader; 
4.import java.io.PrintWriter; 
5.import java.net.Socket; 
6.import java.net.UnknownHostException; 
7. 
8.public class ClientSocket { 
9.    public static void main(String[] args) { 
10.        clientRequest(); 
11.    } 
12.    private static void clientRequest() { 
13.        try { 
14.            while (true) { 
15.                Socket clientSocket = new Socket("172.168.4.105", 3456); 
16.                BufferedReader bReader = new BufferedReader(new InputStreamReader( 
17.                        System.in)); 
18.                System.out.println("please input java or .net or php or end"); 
19.                String strLine = bReader.readLine(); 
20.                if (strLine != null && !"".equals(strLine)) { 
21.                    PrintWriter pWriter = new PrintWriter(clientSocket 
22.                            .getOutputStream(), true); 
23.                    pWriter.println(strLine); 
24.                    BufferedReader br = new BufferedReader( 
25.                            new InputStreamReader(clientSocket.getInputStream())); 
26.                    String strResult = br.readLine(); 
27.                    System.out.println(strResult); 
28.                     
29.                    pWriter.flush(); 
30.                    pWriter.close(); 
31.                    clientSocket.close(); 
32.                } 
33.            } 
34.        } catch (UnknownHostException e) { 
35.            e.printStackTrace(); 
36.        } catch (IOException e) { 
37.            e.printStackTrace(); 
38.        } 
39.    } 
40.} 


这样一个简单的TCP,Socket编程的原型就成了。简单介绍下:



几个比较重要的API



.Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。

.getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例,。

.getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。








分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics