Между тем я нашел более или менее случайное решение, поэтому я дам его здесь, если кому-то еще может быть интересно: В SelectCommd я использую «@ column1» в качестве параметра. В секции SelectParamter имя параметра должно быть «column1» (без @):
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:myConnectionString %>"
ProviderName="Npgsql"
SelectCommand="SELECT column2 from myTable where column1 = @column1)">
<SelectParameters>
<asp:Parameter Name="column1" Type="String"/>
</SelectParameters>
</asp:SqlDataSource>
Его по-прежнему невозможно выполнить «схему обновления» с компонентом sqldatasource (все еще получая ошибку), но теперь оператор select отлично работает во время выполнения, т. е. представление сетки на основе sqldatasource отображает выбранные данные по мере необходимости.
http://code.google.com/p/cocoaasyncsocket/
Это то, что вы хотите.
Грубо говоря, поднимаясь вверх по стеку, вы получаете:
Звучит так, как будто вы хотите CFSocket или, возможно, CFStream.
Вы проверили разъемы BSD в сетевом руководстве Cocoa-Touch ?
Вот пример кода из ранее упомянутого кода AsyncSocket , который я преобразовал в класс под названием SocketCommunicationManager.
Несколько замечаний:
(void) readDataToData: (NSData *) data withTimeout: (NSTimeInterval) timeout tag: (long) tag
метод.Этот метод будет ждать, пока данные не будут записаны в сокет, прочитает до указанного разделителя, а затем вызовет метод делегата (void) onSocket: (AsyncSocket *) sock didReadData: (NSData *) data withTag: (long) tag;
Вот код:
#import <Foundation/Foundation.h>
extern NSString * const kNotification;
extern NSString * const kNotificationMessage;
@class AsyncSocket;
@interface SocketCommunicationManager : NSObject {
AsyncSocket *socket;
BOOL isRunning;
NSNotificationCenter* notificationCenter;
}
@property (readwrite, assign) BOOL isRunning;
- (void)connectToHost:(NSString *)hostName onPort:(int)port;
- (void)sendMessage:(NSString *)message;
- (void)disconnect;
@end
#import "SocketCommunicationManager.h"
#import "AsyncSocket.h"
NSString * const kNotification = @"kNotification";
NSString * const kNotificationMessage = @"kNotificationMessage";
@implementation SocketCommunicationManager
@synthesize isRunning;
- (id) init {
if (!(self = [super init]))
return nil;
socket = [[AsyncSocket alloc] initWithDelegate:self];
[self setIsRunning:NO];
notificationCenter = [NSNotificationCenter defaultCenter];
return self;
}
- (void)connectToHost:(NSString *)hostName onPort:(int)port {
if (![self isRunning]) {
if (port < 0 || port > 65535)
port = 0;
NSError *error = nil;
if (![socket connectToHost:hostName onPort:port error:&error]) {
NSLog(@"Error connecting to server: %@", error);
return;
}
[self setIsRunning:YES];
} else {
[socket disconnect];
[self setIsRunning:false];
}
}
- (void)disconnect {
[socket disconnect];
}
- (void)dealloc {
[super dealloc];
[socket disconnect];
[socket dealloc];
}
- (void)sendMessage:(NSString *)message {
NSString *terminatedMessage = [message stringByAppendingString:@"\r\n"];
NSData *terminatedMessageData = [terminatedMessage dataUsingEncoding:NSASCIIStringEncoding];
[socket writeData:terminatedMessageData withTimeout:-1 tag:0];
}
#pragma mark AsyncSocket Delegate
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
NSLog(@"Connected to server %@:%hu", host, port);
[sock readDataToData:[AsyncSocket LFData] withTimeout:-1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
NSData *truncatedData = [data subdataWithRange:NSMakeRange(0, [data length] - 1)];
NSString *message = [[[NSString alloc] initWithData:truncatedData encoding:NSASCIIStringEncoding] autorelease];
if (message)
NSLog(@"%@", message);
else
NSLog(@"Error converting received data into UTF-8 String");
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:kNotificationMessage];
[notificationCenter postNotificationName:kNotification object:self userInfo:userInfo];
[sock readDataToData:[AsyncSocket LFData] withTimeout:-1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag {
[sock readDataToData:[AsyncSocket LFData] withTimeout:-1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err {
NSLog(@"Client Disconnected: %@:%hu", [sock connectedHost], [sock connectedPort]);
}
@end
Как указывает Дженерич вне, Cocoa Async Socket Framework это путь. Это было вокруг некоторое время и видел много пользы. http://code.google.com/p/cocoaasyncsocket/
Как указал Genericrich, класс AsyncSocket просто замечательно подходит для работы с сокетами. http://code.google.com/p/cocoaasyncsocket/