Swift套接字readline写行

Swift Socket readline writeline

对不起,我的第一个问题是错误;我想问问Swift Socket不是Java

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

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

我想拥有下面的Java函数(out.println和in.readline)

谢谢

Java代码主要来自Oracle示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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实施的官方网站吗?或教我如何实施?
thx much> <

我的快捷代码在下面,并且我不知道如何获取String形式的readline(inputStream)。

然后我写

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

,然后尝试发送到服务器。

但是服务器始终会丢失sendString中的某些内容。

我的服务器在带有Socket

的Android上正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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()


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

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

看看这篇关于套接字编程的文章

编辑:

在任何编程语言中,套接字通信机制都保持不变,只是功能名称有所更改。

服务器:

1)创建一个ServerSocket

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

3)在客户端套接字上打开OutputStream并写入数据。

4)打开InputStream读取数据

客户端

1)在特定IP上打开服务器的套接字