AsyncSocket может подключиться к серверу java Socket, но не может записывать данные - PullRequest
1 голос
/ 18 апреля 2011

каждый раз, когда я вызываю upLoad, распечатки консоли 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!";
}

1 Ответ

0 голосов
/ 18 апреля 2011

Ну, вы больше ничего не выводите на консоль. Вы отправляете его обратно клиенту:

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

Если вы подключитесь к серверу и наберете что-нибудь, вы увидите, что вернули то, что набрали.

Я думаю, что вы ищете:

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