java网络编程-----服务器端的一点问题
服务器端代码:publicclassServer{publicstaticvoidmain(String[]args){......try{//建立连接serverSoc...
服务器端代码:
public class Server {
public static void main(String[] args) {
......
try {
//建立连接
serverSocket = new ServerSocket(port);
System.out.println("服务器已经启动;");
//获得连接
socket = serverSocket.accept();
//接收客户端发送内容
is = socket.getInputStream();
os = socket.getOutputStream();
byte[] b = new byte[1024];
for(int i = 0;i<3;i++){
int n = is.read(b);
//输出
System.out.println("客户端发送内容为:" + new String(b,0,n));
//向客户端发送反馈内容
os.write(b, 0, n);}
//省了异常处理
}
}
}
代码没有出现语法错误,以显示服务器与客服端建立了连接,,但是就是输出不了
客户端发送内容为: 这一句输出语句,求大神指点。。。。谢谢 展开
public class Server {
public static void main(String[] args) {
......
try {
//建立连接
serverSocket = new ServerSocket(port);
System.out.println("服务器已经启动;");
//获得连接
socket = serverSocket.accept();
//接收客户端发送内容
is = socket.getInputStream();
os = socket.getOutputStream();
byte[] b = new byte[1024];
for(int i = 0;i<3;i++){
int n = is.read(b);
//输出
System.out.println("客户端发送内容为:" + new String(b,0,n));
//向客户端发送反馈内容
os.write(b, 0, n);}
//省了异常处理
}
}
}
代码没有出现语法错误,以显示服务器与客服端建立了连接,,但是就是输出不了
客户端发送内容为: 这一句输出语句,求大神指点。。。。谢谢 展开
6个回答
展开全部
接收地方改变为
ByteBuffer buff = ByteBuffer.allocate(2048);
int length = 0;
while(true) {
int len = is.read(b);
if(len <=0 )
break;
buff.put(b,0,len);
lenght += len;
}
buff.flip();
byte [] buffer = buff.array();
String str = new String(buffer, 0, length);
System.out.println(str);
ByteBuffer buff = ByteBuffer.allocate(2048);
int length = 0;
while(true) {
int len = is.read(b);
if(len <=0 )
break;
buff.put(b,0,len);
lenght += len;
}
buff.flip();
byte [] buffer = buff.array();
String str = new String(buffer, 0, length);
System.out.println(str);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,客户端和服务器端的程序要分开写:
Server类用ServerSocket 来接受客户端的输入,你还需要写个Client类来实现客户端向服务器发送消息:Socket s = new Socket(url,port);
首先Client 类使用socket的输出流,向Server发送消息write(),然后Server 用输入流来接收read();之后Server可以用输出流来想Client发送消息,然后Client用输入流来接收。
Server类用ServerSocket 来接受客户端的输入,你还需要写个Client类来实现客户端向服务器发送消息:Socket s = new Socket(url,port);
首先Client 类使用socket的输出流,向Server发送消息write(),然后Server 用输入流来接收read();之后Server可以用输出流来想Client发送消息,然后Client用输入流来接收。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、首先建议你不要省略异常处理,至少printstack打印出来都比一声不响吃掉强,这是个非常不好的习惯。
2、说不定做了第1步答案就已经出来了,如果还不行,在输出语句前面is.read(b)那儿下个断点,跟踪一下。
2、说不定做了第1步答案就已经出来了,如果还不行,在输出语句前面is.read(b)那儿下个断点,跟踪一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,你客户端连请求都没有,服务器怎么接收?
追问
因为程序太长了,不能发布所以我删除了那些请求连接。。。。我只是不知道为什么显示不出来("客户端发送内容为:" 这一句的内容
追答
首先我不知道你服务器端的for循环是干什么用的。你多打印几条语句,看看程序执行到哪儿停止的,顺便把n,
new String(b,0,n));
都打印出来,看看报的什么异常,查出问题不难吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把流封装成DataInputStream再读试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询