每當我調用upLoad,Java控制檯打印接受,但沒有別的,數據傳輸?AsyncSocket可以連接到java套接字服務器但不能寫入數據
我將writedata調用更改爲didConnectToHost,現在客戶端說數據已被傳輸,但是如何在Java Server控制檯中顯示這些數據?
這是我的Java服務器代碼:
import java.net.*;
import java.io.*;
public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss = new ServerSocket(8080);
while (true)
{
socket = ss.accept();
System.out.println("accepted");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
}
}
catch (IOException e)
{}
}
public static void main(String[] args)
{
new Server();
}
}
這是我的iPhone客戶端代碼:
-(IBAction)upLoad{
NSError* error;
NSString* hostIP = @"127.0.0.1";
UInt16 port = 8080;
[aSocket connectToHost:hostIP onPort:port withTimeout:-1 error:&error];
NSData *dataToUpload = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
}
#pragma mark -
#pragma mark socketdelegate
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
connectionStatus.text = @"connected to server!";
NSData *dataToUpload = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:dataToUpload withTimeout:-1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag
{
connectionStatus.text = @"write complete!";
}
我建議你打印出異常,而不是忽略它們,尤其當你有問題要解決。正如Brian所說,它在Java方面看起來不是問題。順便說一句:如果你發送UTF-8,你應該嘗試使用相同的編碼來閱讀。 – 2011-04-18 16:27:25
您的服務器一次只能接受一個連接。這不應該影響你的測試。 – 2011-04-18 16:28:50
我其實第一次誤解了代碼。有一個非常好的理由,他沒有看到控制檯上的其他東西。 – 2011-04-18 16:30:37