Socket(一)

来源:互联网 发布:mysql中enum 编辑:程序博客网 时间:2024/06/08 08:57

  我刚开始学习,有什么不对的还希望大家指出。

  由于客户端的编写与服务端的编写互相影响,所以两个的代码我是交互着写下的。

  下面写的是一个客户端与一个服务端的例子。

  对服务端,首先创建ServerSocket的实例,参数端口号的值是0-65535,但是1024以下的端号口会被系统征用,所以我给它分配的端口号是10086。然后创建Socket对象,调用ServerSocket的实例的accept()方法,等待连接,连接之后打印消息。并在下面接受客户端的数据并打印出来。当接受到“exi”t时退出。

Code:
  1. package Socket;  
  2. /**  
  3.  * @author Geek_Soledad  
  4.  * @creation date 2011-4-24 上午08:22:39  
  5.  *  
  6.  */  
  7. import java.io.*;  
  8. import java.net.*;  
  9.   
  10. public class TCPServer {  
  11.     public static void main( String[] args) {  
  12.         try {  
  13.             ServerSocket ss = new ServerSocket(10086);  
  14.             Socket s = ss.accept();  
  15.             System.out.println("A client connect!");  
  16.             DataInputStream dis = new DataInputStream(  
  17.                     s.getInputStream());  
  18.             String is = dis.readUTF();  
  19.             while("exit".equalsIgnoreCase(is) == false) {  
  20.                 System.out.println(is);  
  21.                 is = dis.readUTF();  
  22.             }  
  23.             dis.close();  
  24.             s.close();  
  25.         } catch (IOException e) {  
  26.             // TODO Auto-generated catch block  
  27.             e.printStackTrace();  
  28.         }  
  29.     }  
  30. }  

  客户端的编写。

  首先创建Socket的实例,参数一为服务端IP,由于我的服务端在本机上,所以用的是127.0.0.1。端口号为服务端开的端口。连接之后打印消息,并开始向服务端发送数据。数据从屏幕输入,每次读取一行。发送数据时使用的是writeUTF()的方法,因为UTF-8的编写比较省空间。当然服务端在读取消息时要用对应的readUTF()方法。

Code:
  1. package Socket;  
  2. /**  
  3.  * @author Geek_Soledad  
  4.  * @creation date 2011-4-24 上午08:30:47  
  5.  *  
  6.  */  
  7. import java.io.*;  
  8. import java.net.*;  
  9.   
  10. public class TCPClient {  
  11.     public static void main( String[] args) {  
  12.         try {  
  13.             Socket s = new Socket("127.0.0.1"10086);  
  14.             System.out.println("成功连上服务端");  
  15.             DataOutputStream dos = new DataOutputStream(  
  16.                     s.getOutputStream());  
  17.             BufferedReader bf = new BufferedReader(  
  18.                     new InputStreamReader(System.in));  
  19.             String words ;  
  20.             do {  
  21.                 words = bf.readLine();  
  22.                 dos.writeUTF(words);  
  23.             } while("exit".equalsIgnoreCase(words) == false);  
  24.               
  25.             s.close();  
  26.         } catch (UnknownHostException e) {  
  27.             // TODO Auto-generated catch block  
  28.             e.printStackTrace();  
  29.             System.out.println("服务器IP错误");  
  30.         } catch (IOException e) {  
  31.             // TODO Auto-generated catch block  
  32.             e.printStackTrace();  
  33.             System.out.println("无法连接主机");  
  34.         }  
  35.     }  
  36. }  

 

原创粉丝点击