一尘不染

ServerSocket java无法读取inputStream?

jsp

我写的服务器是java,这里是代码:

public mainClass() 
{ 
    try 
    { 
        ss = new ServerSocket(8080);

        while (true) 
        { 
            socket = ss.accept(); 
            System.out.println("It is accept!");

            in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
            //out = new PrintWriter(socket.getOutputStream(),true);

            line = in.readLine(); 
            System.out.println("you input is :" + line); 
            //out.close(); 
            in.close(); 
            socket.close();

        }

    } 
    catch (IOException e) 
    {

    }

我正在使用iPhone应用程序作为客户端。现在我的问题是在iphone上运行appication时服务器未读取输入流。。但是一旦应用程序终止,java程序就会打印出已发送到服务器的字符串。很抱歉,如果这不是一个好问题。

- (void)viewDidLoad {
[super viewDidLoad];

socket = [[LXSocket alloc]init];

if ([socket connect:@"10.211.55.2" port:8080]) {

    NSLog(@"socket has been created");
}
else {
    NSLog(@"socket couldn't be created created");
}

@try {

[socket sendString:@"Hi This is a second test"];
}

@catch (NSException * e) {
NSLog(@"Unable to send data");
}


    [super viewDidLoad];

}

谢谢,TC


阅读 346

收藏
2020-06-08

共1个答案

一尘不染

根据我自己的经验,readLine这不是一个好主意,尤其是在使用不同的语言和平台时,更好的方法是使用InputStreamReader及其read(char[] buff)方法,并就双方每次发送的长度达成共识。

同样,我没有提及,只有我的经验。

另外,查看您的代码,您发送的字符串没有换行符:[socket sendString:@"Hi This is a second test"];也许\n在末尾添加将为您解决。

2020-06-08