A. 基於c語言,網路編程,伺服器接收客戶端1的信息發送給客戶端2
char
buff2[1024*10];
int
receiveLen;
/*調用accept函數,等待客戶端的連接*/
client_fd=accept(sockfd,(struct
sockaddr
*)&client_sockaddr,&sin_size
/*調用recv函數接收客戶端的請求*/
recvbytes=recv(client_fd,buf,BUFFER_SIZE,0)
typedef
int
(WINAPI
ICEPUB_TCPSENDANDRECEIVETEXT)(char
*sendBuff,
int
sendBuffLen,char
*recvBuff,int
recvMaxLen,char*
serverIP,int
serverPort);
ICEPUB_TCPSENDANDRECEIVETEXT
*icePub_tcpSendAndReceiveText
=
0;
HINSTANCE
hDLLDrv
=
LoadLibrary
("icePubDll.dll");
if(hDLLDrv)
{
icePub_tcpSendAndReceiveText=(ICEPUB_TCPSENDANDRECEIVETEXT
*)
GetProcAddress
(hDLLDrv,"icePub_tcpSendAndReceiveText");
}
if(icePub_tcpSendAndReceiveText)
receiveLen=icePub_tcpSendAndReceiveText(buf,recvbytes),buff2,1024*10,"192.168.1.2",8000);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox
(buff2);
B. 基於c語言,網路編程,伺服器接收客戶端1的信息發送給客戶端2
char buff2[1024*10];
int receiveLen;
/*調用accept函數,等待客戶端的連接*/
client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size
/*調用recv函數接收客戶端的請求*/
recvbytes=recv(client_fd,buf,BUFFER_SIZE,0)
typedef int (WINAPI ICEPUB_TCPSENDANDRECEIVETEXT)(char *sendBuff, int sendBuffLen,char *recvBuff,int recvMaxLen,char* serverIP,int serverPort);
ICEPUB_TCPSENDANDRECEIVETEXT *icePub_tcpSendAndReceiveText = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_tcpSendAndReceiveText=(ICEPUB_TCPSENDANDRECEIVETEXT *)GetProcAddress(hDLLDrv,"icePub_tcpSendAndReceiveText");
}
if(icePub_tcpSendAndReceiveText)
receiveLen=icePub_tcpSendAndReceiveText(buf,recvbytes),buff2,1024*10,"192.168.1.2",8000);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox(buff2);
C. (用C語言實現)客戶端如何通過socket調用伺服器函數
socket是用來和伺服器通信的,無法直接調用伺服器函數。
要實現功能,可以和伺服器約定協議。
比如,在與伺服器通信連接後,發送一系列標識符,最後加一個函數id,表示要求伺服器調用約定的某一個函數。
伺服器在接收到後,執行對應的函數,將結果返回給客戶端即可。
D. 幫忙看下C語言的問題啊,我想實現的功能是網路傳輸數據,從客戶端傳到伺服器,為什麼傳過去的數值都是0啊
char *itoa(int x,char*string1,int radix);
char *itoa(int y,char*string2,int radix);
這兩行你寫成聲明了。應該用
itoa(x, string1, 10);
itoa(y, string2, 10);
E. 在c語言中客戶端將自己的ip地址傳給伺服器,伺服器怎樣接收輸出
將ip地址轉成4個位元組的char類型,再send,然後伺服器解析出ip地址;
不過你要這個干嗎?直接調用api就能獲取客戶端ip地址
F. (用C語言實現)客戶端如何通過socket調用伺服器函數
socket是用來和伺服器通信的,無法直接調用伺服器函數。
要實現功能,可以和伺服器約定協議。
比如,在與伺服器通信連接後,發送一系列標識符,最後加一個函數id,表示要求伺服器調用約定的某一個函數。
伺服器在接收到後,執行對應的函數,將結果返回給客戶端即可。
G. 誰能用C語言寫個最簡單socket通信服務端和客戶端示例
網路的Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。
下面用Socket實現一個windows下的c語言socket通信例子,這里我們客戶端傳遞一個字元串,伺服器端進行接收。
【伺服器端】
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //偵聽埠
void main()
H. Linux C語言 C/S程序,客戶端發送的數據和伺服器端接收到的數據不一樣,求解
估計你是用的tcp socket,導致「videlord」網友說的情況:對於tcp socket,send與recv不是對等的,recv時只要緩沖有數據就會收上來。簡單說就是你send 4次,比如分別為10 10 10 10位元組,對端可以一次recv到這40位元組數據,也可以recv 40次、每次1位元組。
解決辦法有兩種:
改用udp socket,send/recv自然對等了
繼續用tcp socket,自己進行數據分段:比如自行約定在數據前約定4個位元組用於描述數據長度,這樣發送時,send 4+33位元組,send 4+35位元組;接收時,先獲取描述長度的4位元組獲得長度,再按照長度接收數據(可能需要多次recv湊齊指定長度)。
I. Linux C語言 C/S程序,客戶端發送的數據和伺服器端接收到的數據不一樣,求解
估計你是用的tcp
socket,導致「videlord」網友說的情況:對於tcp
socket,send與recv不是對等的,recv時只要緩沖有數據就會收上來。簡單說就是你send
4次,比如分別為10
10
10
10位元組,對端可以一次recv到這40位元組數據,也可以recv
40次、每次1位元組。
解決辦法有兩種:
1.
改用udp
socket,send/recv自然對等了
2.
繼續用tcp
socket,自己進行數據分段:比如自行約定在數據前約定4個位元組用於描述數據長度,這樣發送時,send
4+33位元組,send
4+35位元組;接收時,先獲取描述長度的4位元組獲得長度,再按照長度
接收數據
(可能需要多次recv湊齊指定長度)。