黑马程序员技术交流社区

标题: 红字标出的部分,编译出现了错误,求大牛指教??? [打印本页]

作者: ytooo00    时间: 2015-5-14 17:48
标题: 红字标出的部分,编译出现了错误,求大牛指教???
10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。


package cn.itcast_01_TCP;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import org.omg.CORBA.portable.InputStream;
import org.omg.CORBA.portable.OutputStream;
//服务器端
public class TCPServer {

public static void main(String[] args) throws IOException {
  //定义服务端,并监听一个端口
    ServerSocket ss = new ServerSocket(10001);
   
    //获取连接过来的客户顿对象
    Socket s = ss.accept();
   
    //通过客户端对象的输入流,获得客户端发来的数据
    InputStream in =s.getInputStream();
    byte[] buf= new byte[1024];
    int len = in.read(buf);
    //获取客户端的ip地址,并打印客户端地址和收到的数据
    String ip = s.getInetAddress().getHostAddress();
    System.out.println(ip + "::" + new String(buf, 0, len));
    //把获得的数据转换成字符数组
    char[] ch= new String(buf, 0, len).toCharArray();
    String newString = new String(reversal(ch));
    //给客户端反馈信息,获取客户端对象的输出流
    OutputStream out =s.getOutputStream();
    out.write(newString.getBytes());
   
    //关闭资源
    s.close();
    ss.close();
   }
   
   
   //定义一个方法,实现字符串反转的功能,完成之后返回字符数组
   public static char[] reversal(char[] ch)
   {
    for(int i=0; i<(ch.length/2);i++)
    {
     //字符数组的两端交换
     char a = ch;
     ch = ch[ch.length -i -1];
     ch[ch.length -i -1] = a;
    }
    return ch;
}
}

package cn.itcast_01_TCP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import org.omg.CORBA.portable.InputStream;
import org.omg.CORBA.portable.OutputStream;
//客户端
public class TCPClinent {

public static void main(String[] args) throws UnknownHostException, IOException {
  //建立客户端
    Socket s = new Socket("127.0.0.1",10001);
    //获取socket流中的输出流
    OutputStream out =s.getOutputStream();
    //从键盘读入字符串
    BufferedReader bufr =
     new BufferedReader(new InputStreamReader(System.in));
    //发送数据
    out.write(bufr.readLine().getBytes());
   
    //获取socket流中的输入流,接收数据
    InputStream in =s.getInputStream();
    //定义缓冲区,存储接收到的数据
    byte[] buf = new byte[1024];
    //读取缓冲区的数据
    int len = in.read(buf);
    System.out.println(new String(buf, 0 ,len));
}
}







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