2011-04-18 62 views
1

每当我调用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!"; 
} 
+0

我建议你打印出异常,而不是忽略它们,尤其当你有问题要解决。正如Brian所说,它在Java方面看起来不是问题。顺便说一句:如果你发送UTF-8,你应该尝试使用相同的编码来阅读。 – 2011-04-18 16:27:25

+0

您的服务器一次只能接受一个连接。这不应该影响你的测试。 – 2011-04-18 16:28:50

+0

我其实第一次误解了代码。有一个非常好的理由,他没有看到控制台上的其他东西。 – 2011-04-18 16:30:37

回答

0

嘛,你不输出任何东西到控制台。您将其发送回客户端:

out.println("you input is :" + line); 

如果您telnet到您的服务器并键入内容,则会看到您找回您输入的内容。

我认为你正在寻找:

System.out.println("you input is :" + line); 
+0

这就是它!服务器代码不是由我编写的,所以我认为它会打印我发送给它的内容。 – CarmeloS 2011-04-18 16:40:33

+0

我认为这只是一个简单的错字,因为客户端输出流被命名为“out”。我第一次读它时甚至错过了它。 – 2011-04-18 16:41:40

相关问题