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上打开服务器的套接字