我的代码如下:注意下面红色字体的代码,如果没有他们,运行起来,服务器端对第二次发送的数据没有相应;
但如果加上,服务器就有相应
不知是什么原因,为什么要先将套接字断开一次???
谢谢,真不知道了···
Socket socket = new Socket("166.111.4.97", 80 ); System.out.println( InetAddress.getByName("166.111.4.97").getHostName() );
BufferedOutputStream sender = new BufferedOutputStream( socket.getOutputStream() );
BufferedInputStream receiver = new BufferedInputStream ( socket.getInputStream() );String senderMessage;
String receiverMessage;
String headerPath = "/pls/bfjd_wwwpub/XK1.ShowMainPage ";
//send an HTTP request to the web server
···
sender.write( senderMessage.getBytes(), 0, senderMessage.getBytes().length );
sender.flush();//read the response byte buffer[] = new byte[1025];
temp = 0;
while (temp != -1)
{
temp = receiver.read( buffer );
if( temp != -1 )
System.out.println( temp + "\r\n" + new String( buffer ) );
}
String receiveBuffer = new String( buffer );
socket.close();
socket = new Socket("166.111.4.97", 80 );
sender = new BufferedOutputStream( socket.getOutputStream() );
receiver = new BufferedInputStream ( socket.getInputStream() );·····
sender.write( senderMessage.getBytes(), 0, senderMessage.getBytes().length );
sender.flush();
System.out.println( senderMessage + "\r\n" + "发送完毕\r\n");
temp = 0;
while (temp != -1)
{
temp = receiver.read( buffer );
if( temp != -1 )
System.out.println( temp + "\r\n" + new String( buffer ) );
}
但如果加上,服务器就有相应
不知是什么原因,为什么要先将套接字断开一次???
谢谢,真不知道了···
Socket socket = new Socket("166.111.4.97", 80 ); System.out.println( InetAddress.getByName("166.111.4.97").getHostName() );
BufferedOutputStream sender = new BufferedOutputStream( socket.getOutputStream() );
BufferedInputStream receiver = new BufferedInputStream ( socket.getInputStream() );String senderMessage;
String receiverMessage;
String headerPath = "/pls/bfjd_wwwpub/XK1.ShowMainPage ";
//send an HTTP request to the web server
···
sender.write( senderMessage.getBytes(), 0, senderMessage.getBytes().length );
sender.flush();//read the response byte buffer[] = new byte[1025];
temp = 0;
while (temp != -1)
{
temp = receiver.read( buffer );
if( temp != -1 )
System.out.println( temp + "\r\n" + new String( buffer ) );
}
String receiveBuffer = new String( buffer );
socket.close();
socket = new Socket("166.111.4.97", 80 );
sender = new BufferedOutputStream( socket.getOutputStream() );
receiver = new BufferedInputStream ( socket.getInputStream() );·····
sender.write( senderMessage.getBytes(), 0, senderMessage.getBytes().length );
sender.flush();
System.out.println( senderMessage + "\r\n" + "发送完毕\r\n");
temp = 0;
while (temp != -1)
{
temp = receiver.read( buffer );
if( temp != -1 )
System.out.println( temp + "\r\n" + new String( buffer ) );
}
而Connection: Keep-Alive是一次TCP连接,传递多次数据.
你按TCP长连接 来写你的TCP程序,进行接收与发送数据就行了.