服务器端正常接收,但是客户端报socket is closed ,求解!!!

Server:packagecom.eshore.itsm.socket;importjava.io.BufferedReader;importjava.io.DataI... Server:
package com.eshore.itsm.socket;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {

/**
* 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
* 而后才可以向客户端发送信息,否则将会有运行时出错。
* @param args
*/
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
//服务器接收到客户端的数据后,创建与此客户端对话的Socket
Socket socket = ss.accept();
//用于向客户端发送数据的输出流
OutputStreamWriter dos = new OutputStreamWriter(socket.getOutputStream());
PrintWriter pw = new PrintWriter(dos);
//用于接收客户端发来的数据的输入流
InputStreamReader dis = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(dis);
System.out.println("服务器接收到客户端的连接请求:" + br.readLine());
//服务器向客户端发送连接成功确认信息
pw.println("接受连接请求,连接成功!");
pw.flush();
pw.close();
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
Client:
package com.eshore.itsm.socket;

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientDemo {

/**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("localhost",8888);
//获取输出流,用于客户端向服务器端发送数据
OutputStreamWriter dos = new OutputStreamWriter(socket.getOutputStream());
PrintWriter pw = new PrintWriter(dos);
//获取输入流,用于接收服务器端发送来的数据
InputStreamReader dis = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(dis);
//客户端向服务器端发送数据
pw.println("我是客户端,请求连接!");
pw.flush();
pw.close();
//打印出从服务器端接收到的数据
System.out.println(br.readLine());
//不需要继续使用此连接时,记得关闭哦
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

}
展开
 我来答
一对儿核桃
2011-04-27 · 专注跨境电商运营与操作
一对儿核桃
采纳数:77 获赞数:435

向TA提问 私信TA
展开全部
你服务器端只执行了一次监听,然后给close掉了。
你需要写个死循环让他一直监听下去,直到用某个指令来结束为止。
建议在百度用《java socket server》来搜索一下例子,多看看。
追问
服务端基础类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-06-05 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
dingqiaowu
2011-04-27 · TA获得超过200个赞
知道小有建树答主
回答量:612
采纳率:0%
帮助的人:440万
展开全部
pw.close();
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
你都把它关闭了,怎么可能不报错
更多追问追答
追问
//服务器向客户端发送连接成功确认信息
pw.println("接受连接请求,连接成功!");
pw.flush();
pw.close();
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
我是在写完之后才关闭的哦。
追答
第一次的发送接收到了没有?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-28
展开全部
检查下客户端是否禁止socket代理!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Finish1983
2011-04-27 · TA获得超过762个赞
知道小有建树答主
回答量:1477
采纳率:100%
帮助的人:414万
展开全部
看看是不是防火墙惹得祸!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式