最近在搞数据交换中心,但是我是属于菜鸟级别的,特别是网络编程这块,哎,没办法,现学现用了。。。= =、

 

我是新人啦,所以对代码不是很熟悉,很多时候直接复制粘贴,Eclipse不是有个提示功能么,记住几个字母就OK了。。。哈哈

 

首先来个服务端:

 1 package org.demo.servers;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.io.PrintWriter;
 7 import java.net.ServerSocket;
 8 import java.net.Socket;
 9 
10 public class SingleServer {
11     private static final int Port = 8080;
12     private ServerSocket serverSocket;
13     
14     public SingleServer() throws IOException{
15         serverSocket = new ServerSocket(Port);
16         System.out.println("服务端正在运行,监听端口:"+Port);
17     }
18     
19     public void service() throws IOException{
20         while(true){
21             //获取请求
22             Socket socket = serverSocket.accept();
23             System.out.println("新的请求来自于:"+socket.getInetAddress()+",端口为:"+socket.getPort());
24             //由系统标准输入设备构造BufferedReader对象
25             BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
26             ////由Socket对象得到输出流,并构造PrintWriter对象,并设置为自动刷新
27             PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
28             
29             //由于是服务端,所以先获取从客户端传进来的数据
30             int c = 0;
31             String msg = "";
32             do{
33                 msg = br.readLine();
34                 System.out.println("客户端发送过来的数据为:"+msg);
35                 if(msg.equals("bye")){
36                     out.println("bye bye!");
37                 }else{
38                     out.println("continue");
39                 }
40                 break;
41             } while ((c=br.read())!=-1);
42             
43             socket.close();
44         }
45     }
46     
47     public static void main(String[] args) throws IOException {
48         new SingleServer().service();
49     }
50 }

接下来是客户端:

 1 package org.demo.client;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.io.PrintWriter;
 7 import java.net.Socket;
 8 import java.net.UnknownHostException;
 9 import java.util.Scanner;
10 
11 public class SingleClient {
12     public static void main(String[] args) throws UnknownHostException, IOException {
13         Socket socket = null;
14         BufferedReader br = null;
15         PrintWriter out =null;
16         boolean isOk = true;
17         do{
18             //向本机的8080端口发出客户请求,当然localhost也可以用
19             socket = new Socket("127.0.0.1",8080);
20             //由系统标准输入设备构造BufferedReader对象
21             br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
22             //由Socket对象得到输出流,并构造PrintWriter对象
23             out = new PrintWriter(socket.getOutputStream());
24             //客户端先写再读
25             System.out.print("请输入想服务端发送的字符:");
26             //向服务器发送数据
27             out.print(new Scanner(System.in).next()+"\r\n");//一定要记住\r\n表示一行结束,不然服务端会在readLine的时候睡死。。
28             out.flush();
29             int c = 0;
30             String msg = "";
31             /**
32              * 第二种获取办法,貌似这种要好点
33              * char[] ch = new char[100];
34              * in.read(ch,0,ch.length);
35              * String msg= new String(ch);
36              * 
37              */
38             do {
39                 //获取从服务器返回的数据
40                 msg = br.readLine();
41                 System.out.println(msg);
42                 if(msg.equals("bye bye!")){
43                     isOk = false;
44                     break;
45                 }
46             } while ((c=br.read())!=-1);//这个地方会阻塞,不知道为什么。
47         } while (isOk);
48         out.close();
49         br.close();
50         socket.close();
51         System.exit(0);
52     }
53 }

 

注释写的不好,有些都是是抄袭,哈哈。

 

我说下我的观点啊,这个只是Socket原始通信,貌似很少用,我也不知道,看网上大牛说的。但是要想把一个东西学精,就要从头开始,呵呵。

我这种写法肯定有很多不对,求大牛指导。

posted on 2013-09-30 15:12  陰川蝴蝶君  阅读(234)  评论(0编辑  收藏  举报