这是我参考网上写的socket的服务器,由于我不是学这个的,但是要用,这个是服务器端,在接收数据时出现问题,连接是正常的,但是必须要在客户端发送数据时按一下回车再发送,才能接收到数据,由于客户端是调试工具,不能改,只能在我这个服务器上改,望各位大神帮我改改
import java.io.*;
import java.net.*;
public class AcceptData { /**
* @param args
*/
public static void main(String[] args) {
AcceptData ad=new AcceptData();
}
public AcceptData()
{
try {
ServerSocket server=new ServerSocket(12345);
System.out.println("正在监听12345端口......");
//保持阻塞
Socket s=server.accept();
System.out.println("连接好了");
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader is=new BufferedReader(isr);
while(true)
{
String info=is.readLine();
System.out.println("接收到的数据:"+info);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class AcceptData { /**
* @param args
*/
public static void main(String[] args) {
AcceptData ad=new AcceptData();
}
public AcceptData()
{
try {
ServerSocket server=new ServerSocket(12345);
System.out.println("正在监听12345端口......");
//保持阻塞
Socket s=server.accept();
System.out.println("连接好了");
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader is=new BufferedReader(isr);
while(true)
{
String info=is.readLine();
System.out.println("接收到的数据:"+info);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
解决方案 »
- 为什么在system.out.println()方法中不能输出void不带返回值的方法呢?
- post方法提交的内容转发问题
- JAVA里如何安全有效地停止(或者说销毁)线程?请指点,万分感谢!
- 读取含有中文的文本文件出现乱码?(急)
- 2个外网之间的机器 如何实现文件传输(Tcp or UDP)
- 推荐个工具给俺呗!
- 如何在SQL查询语句中取得变量的值?
- 我用jbulider5开发EntityBean时,最后一步它非要我输入一个pool name,我该怎么办!!!
- 请问诸位高手:如何在服务器上得到正在连接的客户端IP??
- 急,请教,用appletviewer看applet,jdialog是模态的,但applet嵌入网页中,就不起作用,请帮助,急!!!
- 子线程调用run方法为什么是主线程调用的
- 求助:ubuntu虚拟机怎么执行jdk安装文件报错?谢谢
String info=is.readLine();
你不按回车,没有行结束标识,这个读一行就不会返回,不会返回数据就等待哟。
你的socket是阻塞型的,s.setSoTimeOut()设置一个时间,就不会等待换行就返回了。
其实socket还真必须懂一点才能玩。
改了也没有什么太多的用,要怎么改?这只是你练习一下而以,你客户端怎么做也很重要。 s.setSoTimeout(1000);
BufferedInputStream bis =new BufferedInputStream(s.getInputStream());
byte[] data = new byte[1024];
while(true){
int len = bis.read(data);
System.out.println("接收到的数据:"+ new String(Arrays.copyOf(data, len)));
}