1

1台のサーバーと複数のクライアント(すべてのピアがセッション名を知っている)がある場合、問題はありません。しかし、2台のサーバーに問題があります。クライアントはどのようにsessionIDを知り、サーバーに接続するためのセッション作成とは何ですか、サーバーをどのように選択しますか?ピアピッカーは使いたくない。任意の答えのためにタイ。

4

1 に答える 1

0
- (void)viewDidLoad {
    [super viewDidLoad];

    self.serverArray = [NSMutableArray array];

    self.session = [[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModeClient];

    self.session.delegate = self;

    [self.session setDataReceiveHandler:self withContext:NULL];

    self.session.available = YES;
}

- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state {

    NSString *serverName = [session displayNameForPeer:peerID];

    [self.serverArray addObject:serverName];

    [self.availableServers reloadData];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [self.serverArray objectAtIndex:indexPath.row];

    return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    ClientGameViewController *clientGameViewController = [[ClientGameViewController alloc] init];

     clientGameViewController.serverName = [self.serverArray objectAtIndex:indexPath.row];

    clientGameViewController.serverSessionName = [self.serverArray objectAtIndex:indexPath.row];

     [self.view addSubview:clientGameViewController.view];
}
于 2012-09-14T14:49:36.840 に答える