[疑难] ServerSocket 用法?

hurd 2008-12-11
我用winsock Expert抓下面两个程序运行时候输出到firefox的包,结果不一样,谁知道为什么?
import tango.net.Socket;
import tango.net.SocketConduit;
import tango.net.ServerSocket;

import	tango.util.log.Trace;



void main(){
        auto server = new ServerSocket (new InternetAddress(88));
	while(1){
		Socket req	= server.accept.socket;
		void[] buf;
		buf.length	= 1024;
		auto len	= req.receive(buf);
		
		void[] buf2	= "HTTP/1.1 200 OK\r\nDate: Thu, 11 Dec 2008 06:21:17 GMT\r\n\r\n123\0";
		
		req.send(buf2);
	}

}


上面的输出
引用
HTTP/1.1 200 OK
Date: Thu, 11 Dec 2008 06:21:17 GMT

123





import tango.net.Socket;
import tango.net.SocketConduit;
import tango.net.ServerSocket;

import	tango.util.log.Trace;



void main(){
        auto server = new ServerSocket (new InternetAddress(88));
	while(1){
		SocketConduit req = server.accept;
		char[1024] buf;
		auto len = req.read(buf);

		
		req.write("HTTP/1.1 200 OK\r\nDate: Thu, 11 Dec 2008 06:21:17 GMT\r\n\r\n123\0");
		req.close;
		
		req.shutdown;
		req.detach;
	}
}

上面的输出了:
HTTP/1.1 200 OK
Date: Thu, 11 Dec 2008 06:21:17 GMT

123

/1.1 200 OK

Date: Thu, 11 Dec 2008 06:21:17 GMT



123


第二个例子抓到了2个包,这是bug还是用法错误?  我用1.033+tango 0.97以及http://downloads.dsource.org/projects/tango/snapshots/tango-bin-win32-CURRENT-dmd.1.035.zip都试了,是一样的结果。

hurd 2008-12-11
    ....
tomqyp 2008-12-11
试了你的第二段代码没有你说的两个包的情况,不知道你用什么抓的包,如果客户端是自己写的,最好还是先检查一下客户端的代码。
hurd 2008-12-13
可能winsock Expert这个工具有问题,但是我多次试验发现凡是用了SocketConduit的情况接受端抓的包就和发送的不一致, 而直接用Socket就没问题。 真是奇怪了。。
Global site tag (gtag.js) - Google Analytics