【发布时间】:2016-01-11 09:47:36
【问题描述】:
对不起,我的第一个问题是错误;我想问的是 Swift Socket 而不是 Java
我正在尝试编写一个 Swift 客户端应用程序并连接到 Java 服务器。
我不知道如何在 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 代码如下,我不知道如何获取字符串形式的 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()
【问题讨论】:
-
TCP 套接字绝对不关心两端的编程语言。
-
我知道但我不知道 Swift 语言如何实现。可以教教我在官网哪里可以找到吗?
-
thx @ravindra,我以前读过,但我现在不知道如何实现......你能教我示例代码吗> tutorialspoint.com/java/java_networking.htm