Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在客户端一次从服务器接收字符串?_Java_Objective C_Sockets - Fatal编程技术网

Java 如何在客户端一次从服务器接收字符串?

Java 如何在客户端一次从服务器接收字符串?,java,objective-c,sockets,Java,Objective C,Sockets,在java服务器部分,我一次发送单独的字符串,但在客户端部分,我接收所有字符串,就好像它们是一个字符串一样。如何分离接收到的每个字符串。 这是我的密码 客户部分: uint8_t buf[1024]; unsigned int len = 0; len = [inputStream read:buf maxLength:1024]; NSString *s; NSMutableData* data=[[NSMutableData alloc] initWithLength:0];

在java服务器部分,我一次发送单独的字符串,但在客户端部分,我接收所有字符串,就好像它们是一个字符串一样。如何分离接收到的每个字符串。 这是我的密码

客户部分:

uint8_t buf[1024];
unsigned int len = 0;
len = [inputStream read:buf maxLength:1024];
NSString *s;

    NSMutableData* data=[[NSMutableData alloc] initWithLength:0];
    [data appendBytes: (const void *)buf length:len];
    s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

     NSString *firstString;// save first string received here
     NSString *secondString;// save second string received here
     NSLog(@"%@",s);
服务器部件:

ServerSocket welcomeSocket=new ServerSocket(6789);
while(true){
try{
Socket connectionSocket=welcomeSocket.accept();
OutputStream outToClient=new BufferedOutputStream(connectionSocket.getOutputStream());
outToClient.write("sign up accepted you can now sign in\n".getBytes("UTF-8"));
outToClient.write("enter\n".getBytes("UTF-8")));
}
catch(Exception e){System.out.println(e)}
finally{
if(outToClient!=null){
outToClient.flush();
}

您可以在每次写入服务器上的输出流时发送固定数量的字节作为“数据包宽度”(用零或其他东西填充未使用的字节),然后在客户端用相同数量的字节填充缓冲区进行读取。或者你可以发送它们并用哨兵字符分隔字符串,而不用担心。确保在完成编写时调用
outToClient.flush()
,一种方法是使用高度抽象的类,如
PrintWriter
,来处理服务器(Java)中的编写部分。所以你要一行一行地写句子,其中换行符是分隔符。在客户端没有其他更简单的方法可以一次检索每个字符串吗?因为我已经习惯了java,而且在java中,使用bufferedReader就可以很容易地做到这一点