WANGYANG000001 2016-01-10 03:57 采纳率: 50%
浏览 1920
已结题

java的Socket编程的一个问题

服务器端
package 手写服务器一;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
private ServerSocket server;

public static void main(String[] args) {
    Server s=new Server();
    s.start();
}
//创建客户端
private void start(){
    try {
        server=new ServerSocket(9999);
        this.receive();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
//接收数据
private void receive(){
    try {
        Socket socket=server.accept();
        StringBuilder msg=new StringBuilder();
        String str=null;
        BufferedReader reader=new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
        while((str=reader.readLine()).length()>0)
        {
            msg.append(str);
            msg.append("\r\n");
        }
        System.out.println(msg.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}
客户端
package 客户端;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
public static void main(String[] args) throws IOException{
@SuppressWarnings("resource")
Socket socket=new Socket(InetAddress.getLocalHost(),9999);
BufferedWriter writer=new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
writer.write("我是");
writer.newLine();
writer.flush();
}
}
报的错为:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at 手写服务器一.Server.receive(Server.java:34)
at 手写服务器一.Server.start(Server.java:20)
at 手写服务器一.Server.main(Server.java:14)
在服务器端的接收数据的while那里会出错,这是为什么呢,又应该怎么改进呢,使
服务器可以循环接收,但是但我用浏览器访问服务器端时确不会出错,求大神解答。

主要问一下为什么会出这样的错,改进可以次要。

  • 写回答

6条回答 默认 最新

  • Robot-C 2016-01-10 04:00
    关注

    我的电脑在局域网里面,ip为10.13.45.178web server用的是tomcat5.0.30,端口为8080;我的代码只有一句。如下:Socket s = new Socket("10.13.45.178",8080);但是这一句代码要运行17秒钟左右,但是如果我把上面的代码改成如下:Socket s = new Socket("localhost",8080);时间就会立即提升到30微......
    答案就在这里:问一个关于java Socket编程的问题。
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题