
服务器端正常接收,但是客户端报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();
}
}
} 展开
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();
}
}
} 展开
展开全部
你服务器端只执行了一次监听,然后给close掉了。
你需要写个死循环让他一直监听下去,直到用某个指令来结束为止。
建议在百度用《java socket server》来搜索一下例子,多看看。
你需要写个死循环让他一直监听下去,直到用某个指令来结束为止。
建议在百度用《java socket server》来搜索一下例子,多看看。
追问
服务端基础类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-06-05 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
展开全部
pw.close();
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
你都把它关闭了,怎么可能不报错
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
你都把它关闭了,怎么可能不报错
更多追问追答
追问
//服务器向客户端发送连接成功确认信息
pw.println("接受连接请求,连接成功!");
pw.flush();
pw.close();
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
我是在写完之后才关闭的哦。
追答
第一次的发送接收到了没有?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-28
展开全部
检查下客户端是否禁止socket代理!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看是不是防火墙惹得祸!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询