抱歉,我的第一个问题是错误;我想要求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()
答案 0 :(得分:1)
您必须 flush() PrintWriter才能在Socket的另一端接收数据。您正在调用System.out.flush()而不是PrintWriter。 flush()
out.flush() // This will do the trick for you.
的文章
修改强>
在任何编程语言中,套接字通信机制保持不变,除了更改函数名称。
服务器强>
1)创建ServerSocket
2)在无限循环中接受客户端套接字
3)在Client Socket上打开OutputStream并写入数据。
4)打开InputStream读取数据
<强>客户端强>
1)在特定的IP&amp; amp;上打开一个服务器的套接字。端口
2)在Socket上打开OutputStream
3)将数据写入流(在带有写入器的流的包装器上)
4)打开输入流以读取数据
看一下这个Question,以便快速实现socket的客户端。
查看Swift客户端和Java服务器article和SE question