我正在尝试在iOS客户端(iPad Air 2)和C#服务器之间建立Websocket连接。
在iOS上,我使用Starscream(https://github.com/daltoniam/Starscream)进行网络套接字连接。但是,在我成功连接到服务器之后,它会自动断开连接。 Sec-WebSocket-Accept双方都相同。 我猜该错误在我的C#服务器中,但是我无法弄清楚到底是什么错误。
这是我的iOS代码:
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
export function convertObservableToBehaviorSubject<T>(observable: Observable<T>, initValue: T): BehaviorSubject<T> {
const subject = new BehaviorSubject(initValue);
observable.subscribe(
(x: T) => {
subject.next(x);
},
(err: any) => {
subject.error(err);
},
() => {
subject.complete();
},
);
return subject;
}
这是我的C#服务器:
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
unsigned int y, k, n;
set <int> s;
cin >> y >> k >> n;
if (y >= n)
{
cout << -1; return 0;
}
for (int i = y + 1; i <= n; i++)
{
if (i%k == 0)
{
s.insert(i - y);
}
}
if (s.begin() == s.end())
{
cout << -1; return 0;
}
for (auto x : a)
cout << x << " ";
}
答案 0 :(得分:0)
您所需要的只是一个监听循环。因为这是自上而下的执行,所以在编写响应后,tcp客户端侦听器将停止。您可以看一下此实现https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcplistener?view=netframework-4.7.2
答案 1 :(得分:0)
我发现了问题,它在我的C#服务器内部: 连接客户端并且握手成功后,您必须致电
server.AcceptSocket(); //or server.AcceptSocketAsync()