我写的服务器是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
根据我自己的经验,readLine这不是一个好主意,尤其是在使用不同的语言和平台时,更好的方法是使用InputStreamReader及其read(char[] buff)方法,并就双方每次发送的长度达成共识。
readLine
InputStreamReader
read(char[] buff)
同样,我没有提及,只有我的经验。
另外,查看您的代码,您发送的字符串没有换行符:[socket sendString:@"Hi This is a second test"];也许\n在末尾添加将为您解决。
[socket sendString:@"Hi This is a second test"];
\n