黑马程序员技术交流社区
标题:
tcp上传的小疑惑
[打印本页]
作者:
不破大地
时间:
2013-6-1 21:57
标题:
tcp上传的小疑惑
public static void main(String[] args) throws Exception
{
ServerSocket ss=new ServerSocket(10009);
Socket s=ss.accept();
InputStream in=s.getInputStream();
FileOutputStream fos=new FileOutputStream("server.bmp");
byte[] buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1)
{
fos.write(buf,0,len);
}
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
fos.close();
ss.close();
s.close();
}
在该服务端中,输出的应该是ServerSocket ss啊,为啥是s输出,还请各位师兄师姐指点。。
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
作者:
石贤芝
时间:
2013-6-1 23:59
服务器端可以接受多个客户端发过来的数据,对于每个连通的客户端它都会创建一个Socket对象,然后再通过这个Socket对象接受发送数据。
即Socket s=ss.accept(); 然后这个Socket对象就会向与它对应的客户端接受或发送数据。
如果用ServerSocket输出数据,就有到底要把数据传给哪个客户端的疑问,如果这样设计,服务器也会疯。哈哈。。
作者:
wangpan
时间:
2013-6-2 00:23
一个服务器可以有多个客户端来访问。服务器是没有自己的输入输入流的,一旦有客户端访问服务器,服务器就会利用accept()方法获得客户端的socket对象,然后利用客户端socket对象的输入输出流和客户端进行交互,这样就能保证数据不会发错了。
例如:
InputStream in=s.getInputStream();
......
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
你看,上面这几句中的s,就是ServerSocket对象利用Accept()方法获取连接过来的客户端Socket,然后这个服务器都是利用这个s进行读取和输出的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2