SOCKET问题

如果服务器端与客户端建立了连接
客户端给服务器的发送信息,getOutputStream.write
但是服务器端不调用getInputStream.read
想问,这中情况数据是否发送到服务器断,?怎么能判断服务器段没有调用getInputSream,如果没调用我就不发,

up

你先看看tcp/ip协议最好

传输过程是不需要你参与的,socket传输会自动写到缓冲区,跟你是否调用函数是无关的,这不是你应用关注的问题。

第二个是你的设计不合理,socket的服务端必然是多线程的。accept通常是用一个新的线程,然后用过while来读取数据,直到客户端关闭连接或者遇到固定字符(比如quit)来服务器端来关闭。

再问一下关于HTTP协议的问题
是不是HTTP协议中客户端给服务器端发信息除了内容是 application/x-www-form-urlencoded 类型的WEB服务器才会处理,别的类型的需要到相应的SERVLET中处理,而SERVLET直到客户端调用了服务器端的getInputStream();时候才会执行,这样HTTP协议就不能传送大文件了?是不是这个原因 呢?
以下代码。。
URL l_url = new URL("http://localhost:8080/test");//test是一个servlet
File f=new File("g:/logo.jpg");

HttpURLConnection urlConn = (HttpURLConnection) l_url.openConnection();
urlConn.setRequestMethod("POST");
urlConn.setDoInput(true);
urlConn.setDoOutput(true); // 需要向服务器写数据
urlConn.setUseCaches(false);
urlConn.setRequestProperty("Content-Type","image/jpg");

OutputStream out=urlConn.getOutputStream();
BufferedInputStream fin=new BufferedInputStream(new FileInputStream(f));
int i=0;
while((i=fin.read())!=-1){
out.write(i);
}
out.close();
fin.close();

urlConn.getInputStream(); //如果不调用这句WEB服务器不执行test SERVLET
谁能告诉我服务器端是怎么判断的?

up
知道的说一下

up

up

>怎么能判断服务器段没有调用getInputSream
从两个方面入手:
1. socket本身机制,判断socket是否被关闭等。

2.从协议内容入手,例如http协议,需要服务器端给个响应啊,request/respsonse是一个循环。