黑马程序员技术交流社区

标题: 网络编程服务端与客户端交互 [打印本页]

作者: 黄业凌    时间: 2012-4-24 13:01
标题: 网络编程服务端与客户端交互
本帖最后由 黄业凌 于 2012-4-24 13:03 编辑

遵循TCP协议两者都连接上了,客户端发送的消息服务端不能收到

//服务端
package cm.day5.netwrok.mutual;
import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MyServerSocket {

        /**
         * 实现服务端与客户端的相互传送信息
         * @param args
         */
        
        /**
         * 服务端
         * @param args
         */
        ServerSocket ss = null;
        //构造函数
        MyServerSocket(){
                try{
                //建立ServerSocket服务监听指定端口
                 ss = new ServerSocket(10086);
                }catch(Exception e){
                        
                }
        }
        
        //程序入口
        public static void main(String[] args)throws IOException {
                MyServerSocket mss = new MyServerSocket();
                mss.startThread();
        }
        
        //启动线程
        public void startThread(){
                new ServerTask().start();
        }
        
        //实现功能
        class ServerTask extends Thread{
               
                public void run(){
                        try{
                        while(true){
                        //显示服务端正常启动
                        System.out.println("服务端启动");
                        //ServerSocket服务accept方法返回Socket对象
                        Socket s = ss.accept();
                        //获取连接客户端IP
                    String ip = s.getInetAddress().getHostAddress();
                    System.out.println("IP" + ip + "连接进入服务端");
                    //创建打印流
                    PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
                    //创建输入流 socket对象的输入流是字节流 通过InputStreamReader转换流将字节流转换为字符流传入字符流缓冲区
                    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                    //创建输入流
                    BufferedReader bIn = new BufferedReader(new InputStreamReader(System.in));
                    String len = null;
                    len = bIn.readLine();
                            //服务端发送数据给客户端
                            pw.println(len);
                            //接收客户端发送数据
                            String data = br.readLine();
                            System.out.println("客户端:" + data);        
                        }
                        }catch(Exception e){
                                
                        }finally{
                                try{
                                         ss.close();
                                }catch(Exception e){
                                       
                                }
                        }
                    
                }
        }
}

//客户端
package cm.day5.netwrok.mutual;
import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
        /**
         * 客户端
         */
public class MySocket{
        
        
        public static void main(String[] args) throws IOException{
                while(true){
                //建立Socket服务,指定服务端Ip地址与端口号
                Socket s = new Socket("192.168.1.101",10086);
                        //显示客户端正常启动
                        System.out.println("客户端启动");
                        //将Socket输入流通过转换流转换成字符流缓冲区
                        BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                        //打印流输入数据给服务端
                        PrintWriter pw = new PrintWriter(s.getOutputStream());
                        //创建控制台输入流
                        BufferedReader bIn = new BufferedReader(new InputStreamReader(System.in));
                        String len = null;
                        len = bIn.readLine();
                                //输出数据到服务端
                                pw.println(len);
                                //打印服务端返回数据
                                String data = br.readLine();
                                System.out.println("服务端:" + data);

                }
                        
        }
        
        
        
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2