1、c# 開發c/s程序時,將操作資料庫的函數放在客戶端,客戶端如何通過SOCKET去調用這些函數呢?
看樣子你還沒有明白什麼是bs 和cs 吧??
做cs程序 本地有一個資料庫! 伺服器也版有一個資料庫!
本地很操作一次 就會把權數據上傳到伺服器。
只所以分 cs和bs
cs就是為了 伺服器不能正常運行時 客戶端操作的數據會保存在本地 一直等到伺服器恢復運行 再把 數據上次!
怎麼調用?? 就是操作資料庫啊
2、C語言socket連接
你肯定要定一個上限啊,比如最多隻能同時給50個客戶提供連接,也就是50個線程。多餘的其它客戶連接會被阻塞直到有空餘的連接出現。其實就是所謂的「線程池」的概念,你可以搜搜這方面的內容,很多很多的。
3、幫忙! c/c++使用socket訪問網址
#include <stdio.h> #include <WINSOCK2.H> #pragma comment(lib,"ws2_32.lib") #define LEN 1024 //接收數據的大小 int main() { WSADATA ws; WSAStartup(MAKEWORD(2,2),&ws);//初始化Socket動態連接庫 char http[60] = " www.google.com "; SOCKET sock = socket(AF_INET,SOCK_STREAM,0);//建立socket if (sock == INVALID_SOCKET) { printf("ERROR\n"); return 0; } sockaddr_in hostadd; hostent* host = gethostbyname(http);//取得主機的IP地址 memcpy(&hostadd,host->h_addr,sizeof(hostadd));//將返回的IP信息Copy到地址結構 hostadd.sin_family = AF_INET; hostadd.sin_port = htons(80); char buf[LEN]="GET / HTTP/1.1\r\nHost: ";//構造Http請求數據包 strcat(buf,inet_ntoa(hostadd.sin_addr)); strcat(buf," \r\nContent-Length: 10\r\n\r\n"); strcat(buf,"Connection:close"); int time = 1000; //超時時間 setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(char*)&time,sizeof(time)); if (connect(sock,(sockaddr*)&hostadd,sizeof(hostadd)) == SOCKET_ERROR)//連接請求 { printf("\nSocket ERROR:%d\n",GetLastError()); return 0; } if (SOCKET_ERROR == send(sock,buf,strlen(buf)+1,0))//發送構造好的Http請求包 { printf("\nERROR:send fail!\n"); return 0; } memset(buf,0,LEN); recv(sock,buf,LEN,0);//接收返回的數據 printf("\n%s\n",buf); closesocket(sock); WSACleanup(); return 0; } //給你個示例吧...
求採納
4、CSocket怎麼實現聯網功能
CSocket 實現聯網發送消息代碼只有簡單的幾句,CSocket是阻塞的,也就是遇到accept語句和recive語句時 就會等待,以至於出現像「死機」那樣,所以就要用到多線程,把會讓程序等待的語句放到新線程里,然後在新線程來個無限循環去接受消息,還有一點就是CSocket對象不能跨線程,必須用Detach()分離對象 然後用Attach合並(這里比較麻煩)!呵呵
5、Linux環境下C語言程序設計,伺服器通過socket連接後,向客戶端發送字元串「連接上了」。在伺服器上……
服務端:
先創建server_socket;
然後bind;
listen;
int clientsocket=accept(server_socket,(struct sockaddr*) &client_addr, &length);
printf("客戶端IP:%s",client_addr);
send to 客戶端.;
close(clientsocket);
客戶端:
創建client_socket;
connect;
close;
具體細節,您自內己去網容上搜搜哈
6、在windows下用C語言如何實現socket網路編程,需要用到哪些頭文件或者庫?
需要用到的頭文件包含:
#include <winsock2.h>
#include <windows.h>
與Linux環境下socket編程相比,windows環境多了一個步驟:啟動或者初始化winsock庫
Winsock,一種標准API,一種網路編程介面,用於兩個或多個應用程序(或進程)之間通過網路進行數據通信。具有兩個版本:
Winsock 1:
Windows CE平台支持。
頭文件:WinSock.h
庫:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通過前綴WSA可以區別於Winsock 1版本。個別函數如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都屬於Winsock 1.1規范的函數;
頭文件:WinSock2.h
庫:ws2_32.lib
mswsock.h用於編程擴展,使用時必須鏈接mswsock.dll
(6)csocket域名連接資料庫擴展資料
winsock庫的載入與卸載:
載入:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
載入成功,返回值為0。
WORD wVersionRequested:載入的winsock版本,使用宏MAKEWORD(x, y),x表示高位元組,y表示低位元組。然而使用時MAKEWORD(2, 2)。高位元組與低位元組相同~~
LPWSADATA lpWSAData:WSADATA結構的指針,傳入參數後,系統幫助我們填充版本信息。有興趣的可以看看結構體內容,不過基本用不著。
卸載:int WSACleanup(void);比起載入,卸載的函數真是輕松愉快。
7、新手初學C語言socket編程。想問一下如何把IP地址作為參數傳到函數裡面。
你輸出看看inet_addr的返回值是多少,按說不應該在這里出問題的
另外本地回環是127.0.0.1
還有communication函數的第一個參數char IPAddr[10]最好還是改成char *IPAddr吧
8、CSocket 接收數據
對於CSocket來說,你要重載OnReceive函數
如果有數據OnReceive函數會響應回
//假設CSocketEx : public CSocket
//大概寫答的
CSocket::OnReceive( ... )
{
INT iRead = Receive( buf , MAX_LEN ) ;
}
9、如何用C/S模型的Socket通訊進行連接及數據收發
1.連接該部份比較簡單,只有三個簡單的函數:CreateConnectToRemoteSocket,ConnectToRemoteCore,AsyncConnectToRemoteCore,CreateConnectToRemoteSocket:創建連接的Socket,其中CheckSockectIsConnected是檢查是否已連接(該函數用了MS使用的例子來判斷是否已連接),最後使用傳進的參數(如果不為null)設置SOCKET(比如超時等等),TcpIPSocketSetting類是一個專用戶設置SOCKET的類ConnectToRemoteCore:同步連接到遠程AsyncConnectToRemoteCore:非同步連接到遠程,在該函數中用到類介面ITranseParamets,使用SocketAsyncEventArgs.UserToken存儲該介面參數,對於該介面的定義我會在代碼中貼出,並且屬性及方法也會在該介面中說明,其實現會在後續章節中講 到,SocketAsyncEventArgs.RemoteEndPoint存儲要連接到的遠程終結點(這個一定要設),最後調用Socket.ConnectAsync函數非同步連接,該函數使用的參數及返回值的含義等同上一章使用到的Socket.AcceptAsync,在Socket中類似這樣的還有收發函數Socket.SendAsync,Socket.ReceiveAsync,這些函數都使用SocketAsyncEventArgs類,返回值都是Bool類型,含義及處理都類型上一章的Socket.AcceptAsync,只是在調用前設置SocketAsyncEventArgs類的方法不同(而所有方法中都必需設置SocketAsyncEventArgs.Completed事件),及返回後SocketAsyncEventArgs類的有效屬性不同,本例中是在GetSocketArg方法中設置了SocketAsyncEventArgs類的屬性,由於GetSocketArg是一個通用方法,其實在本例中它僅設置類SocketError屬性及Completed事件,其它屬性都是null,本例中Socket.ConnectAsync方法完成後的有效屬性:它完成後僅SocketError屬性有效指示是否成功OnCompleted:Completed事件處理程序,該常式是連接及數據收發的處理常式,先講連接的處理常式,僅僅調用OnConnectCompleted方法完成連接OverAsyncTranse:該常式用於完成非同步操作,它在連接及收發操作中都會調用,首先RecySocketAsyncEventArgs,回收SocketAsyncEventArgs,如果你的SocketAsyncEventArgs不是使用緩沖的則不必調用了,設置ITranseParamets.TranseError指示是否有錯誤,調用ITranseParamets.AsyncTranseOver通指非同步操作完成2.數據收發的約定數據的收發方都遵循約定ITranseHeader,該介面是一個約定,及傳輸過程中的控制信息,實現該介面的類負責解讀該約定的含義,而該介面在網路中傳輸的數據則存儲在該介面的Data屬性中,Data屬性應該是一個接收雙方都已知長度的位元組數組,通常方送方事先填充Data,接收方根據雙方已知的位元組長度接收該長度位元組數的內容,具體說命見代碼中貼出的說明,其實現會在後續章節中給出,其實這個就類似於數據傳輸協議的頭3.數據的收發
10、C/S模式下遠程數據操作使用socket好還是使用遠程資料庫連接(如SQL Server本身就支持遠程資料庫連接)?
都不太好,不安全,且可能被防火牆攔住。
看一下去計算的文章,用web服務的方式處理。