黑马程序员技术交流社区
标题:
求指点,客户端和服务端间数据传输。
[打印本页]
作者:
xiayoutianxia
时间:
2014-8-28 12:16
标题:
求指点,客户端和服务端间数据传输。
客户端发送字符串,由服务端接收并反转然后返回给客户端。
客户端
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket s =null;
BufferedReader bufr=null;
PrintWriter out =null;
BufferedReader bufin=null;
try
{ //创建客户端对象
s = new Socket("192.168.0.101",9007);
while(true)
{ //键盘录入
bufr=new BufferedReader(new InputStreamReader(System.in));
//创建一个输出流
out =new PrintWriter(s.getOutputStream());
//创建一个获取输入流
bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
String line =null;
while((line=bufr.readLine())!=null)
{ //定义一个结束标记
if("over".equals(line))
break;
//向服务端发送数据
out.println(line);
String info=bufin.readLine();
//打印服务端返回的数据
System.out.println("info="+info);
}
}
}
catch(Exception e)
{ //异常处理
throw new RuntimeException("错误");
}
finally
{
if(s!=null)
try
{ //关闭客户端
s.close();
}
catch(Exception e)
{
throw new RuntimeException("错误");
}
}
}
服务端
public static void main(String[] args)throws Exception {
//创建一个服务端对象并与客户端连接
ServerSocket ss=new ServerSocket(9007);
Socket s =ss.accept();
//获取客户端的地址
String ip =s.getInetAddress().getHostAddress();
System.out.println(ip+".......is connected");
try
{
while(true)
{ //创建一个输出流
BufferedReader bufin =
new BufferedReader(new InputStreamReader(s.getInputStream()));
//常见一个获取输入流
PrintWriter out = new PrintWriter(s.getOutputStream());
String line =null;
while((line=bufin.readLine())!=null)
{
//打印从客户端获得的数据
System.out.println(line);
//建立一个缓冲区用于存储从客户端获得的数据
StringBuilder sb=new StringBuilder(line);
//将获得的字符串进行反转并打印
String re=sb.reverse().toString();
System.out.println(sb+"......"+re);
//将反转的的字符串返回给客户端
out.println(re);
}
}
}
catch(Exception e)
{ //异常处理
throw new RuntimeException("错误");
}
finally
{
if(s!=null)
try
{ //关闭客户端
s.close();
}
catch(Exception e)
{
throw new RuntimeException("错误");
}
if(ss!=null)
try
{ //关闭服务端
ss.close();
}
catch(Exception e)
{
throw new RuntimeException("错误");
}
}
}
可以 建立连接,但是客户端发送数据服务端接收不到啊。
作者:
咸菜+萝卜干
时间:
2014-8-28 12:22
继续看视频呗{:3_47:}
作者:
依然超级赛亚人
时间:
2014-8-28 12:43
本帖最后由 依然超级赛亚人 于 2014-8-28 12:51 编辑
PrintWriter的构造参数列表中应该有"true",没有的话就没刷新。还有点问题,你的这个程序输入over根本不会结束,客户端和服务端明明一层while就可以了,为什么两层?这样的话你结束了输入但外层没有结束,还在等,输入over不会停止。把这两个外层的while都去了吧。再试试。
作者:
xiayoutianxia
时间:
2014-8-28 12:53
依然超级赛亚人 发表于 2014-8-28 12:43
PrintWriter的构造参数列表中应该有"true",没有的话就没刷新。还有点问题,你的这个程序输入over根本不会 ...
多谢,问题已经解决了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2