我用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上运行时,服务器没有读取输入流。但是一旦应用程序终止,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)
方法,并双方就每次发送的长度达成一致。
再说一次,我没有提到这一点,只是我的经验。
此外,查看您的代码,您发送一个不带换行符的字符串: [socket sendString:@"Hi This is a secondary test"];
也许添加 \n
最后会为你解决。
关于java - ServerSocket java不读取inputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975410/