Swift Socket readline writeline

时间:2015-10-13 15:03:12

标签: swift sockets readline

抱歉,我的第一个问题是错误;我想要求Swift Socket而不是Java

我正在尝试编写Swift客户端应用程序并连接到Java Server。

我不知道如何在Swift客户端中使用Socket。

我希望在Java函数(out.println和in.readline)

之下

感谢

Java代码主要来自Oracle示例。

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

out.println("Hello World");

while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
System.out.flush();

out.println("test");

if (inputLine.equals("Bye")) {
    break;
   }
}

out.close();
in.close();
socket.close();

很抱歉第一次输入错误问题

你可以告诉我在哪里可以找到Swift在官方网站上实现的方法吗?还是教我如何实施? 很多><

我的swift代码如下,我不知道如何获取String表单readline(inputStream)。

我写了

outputstream.write(queryString,maxLength: queryString.characters.count) 

并尝试发送到服务器。

但是服务器总是收到sendString中丢失的一些内容。

我的服务器在带有Socket的Android中没问题

let addr = "xxooo"
    let port = 10009

    var inp : NSInputStream?
    var out : NSOutputStream?

    NSStream.getStreamsToHostWithName(addr, port: port, inputStream: &inp, outputStream: &out)
    print("test1")
    let inputstream = inp!
    let outputstream = out!
    inputstream.open()
    outputstream.open()
    print("test2 queryString=\(queryString)")

      outputstream.write(queryString,maxLength:queryString.characters.count)
    print("test3 \(queryString.characters.count)")
    let buffersize = 1024
    var buffer = Array<UInt8>(count : buffersize,repeatedValue :0)

    let bytesRead = inputstream.read(&buffer, maxLength: buffersize)
    var getString : NSString?
    print("test4")

    if(bytesRead>0){
        getString = NSString(bytes: &buffer, length: bytesRead, encoding:  NSUTF8StringEncoding)
        print("getString = \(getString!)")

    }else{

    }
    inputstream.close()
    outputstream.close()

1 个答案:

答案 0 :(得分:1)

您必须 flush() PrintWriter才能在Socket的另一端接收数据。您正在调用System.out.flush()而不是PrintWriter。 flush()

out.flush() // This will do the trick for you.

查看有关socket programming

的文章

修改

在任何编程语言中,套接字通信机制保持不变,除了更改函数名称。

服务器

1)创建ServerSocket

2)在无限循环中接受客户端套接字

3)在Client Socket上打开OutputStream并写入数据。

4)打开InputStream读取数据

<强>客户端

1)在特定的IP&amp; amp;上打开一个服务器的套接字。端口

2)在Socket上打开OutputStream

3)将数据写入流(在带有写入器的流的包装器上)

4)打开输入流以读取数据

看一下这个Question,以便快速实现socket的客户端。

查看Swift客户端和Java服务器articleSE question