1樓:_夢幻陽光
#include#include
#include
#include
#include
#include
#include
#define serverport 5555#define backlog 10
#define maxlen 1024
int main();
struct sockaddr_in my_addr;
struct sockaddr_in cli_addr;
int iret;
/*建立socke通訊*/
if((sockfd = socket(af_inet,sock_stream,0)) == -1)
printf("socket success\n");
my_addr.sin_family=af_inet; my_addr.sin_port=htons(serverport);
my_addr.sin_addr.s_addr=inaddr_any;
memset(my_addr.sin_zero,0,8);
/*繫結socket埠*/
printf("bind success\n");
/*監聽埠*/
if(listen(sockfd,backlog) == -1)
printf("listren success\n");
while(1)
printf("accept success\n");
printf("receive a connection form %s\n",inet_ntoa(cli_addr.sin_addr));
/*fork程序,子程序處理接收的資訊*/
iret=fork();
if(iret < 0)
/*fork返回0,為子程序*/
else if(iret == 0)
printf("recvlen[%d]\n",recvlen);
printf("recvmsg:\n%s\n",recvbuf);
/*向客戶端傳送內容*/ if(send(client_fd,recvbuf,recvlen,0) == -1)
printf("sendmsg:\n%s\n",recvbuf);
close(client_fd);
exit(0);
} /*父程序,返回子程序pid*/
else }
close(sockfd);
exit(0);}
2樓:冰是沉默的水
好厲害的樣子,完成了可以給我**麼!我也想看看!
3樓:
可以給我一份嗎?謝謝,[email protected]
c語言socket程式設計要怎麼實現伺服器可以發訊息給客戶端?
4樓:love添飯
先要理解
來socket是什麼?
簡單的說socket是一
自個全雙工的通訊通道,bai
即使用dutcp或者udp通訊時均可zhi以在傳送訊息的同時接受消dao
息,它不區分是否是伺服器。
根據這個概念你的問題就很好回答。
》當客戶端與伺服器連線後。有什麼方法使伺服器可以隨時隨地發訊息給客戶端?
》我現在只能。客戶端發個訊息給伺服器。伺服器才能發個訊息給客戶端。也就是說客戶端不發訊息。伺服器就沒法發訊息給客戶端。
》求大牛給個思路。當連線後。客戶端與伺服器雙方可以隨時隨地通訊!
使用多執行緒,一個維持接受邏輯,一個維持送信邏輯,即可完成同時接受及傳送。
客戶端及伺服器端均做上述設定。
而你的做法是在一個執行緒中執行接受與送信,因此只能按照順序邏輯完成接收與送信。
關鍵點是多執行緒。
5樓:匿名使用者
繫結兩個埠,一個專門傳送,一個專門接收
如何用c語言編寫一個簡單的聊天室程式
6樓:頂起石頭的小草
你好!是dos下的聊天程式嗎
c語言socket伺服器怎麼給客戶端發訊息
7樓:匿名使用者
socket 伺服器給指定的客戶端發訊息該怎麼處理(tcp)(c語言)
多個客戶端之間進行通訊,通過伺服器**的形式,現在客戶端1請求向客戶端2傳送訊息,先把訊息傳送到伺服器,伺服器怎麼才能把訊息**到客戶端2而不是**給客戶端3或者他自己。
8樓:山成褒庚
最好的方法是:每一客戶端用唯一的id來標示,就像qq號一樣,
在客戶端連線伺服器,傳送自己的id,
然後和相應產生的socket進行繫結,
一個客戶端向另一個客戶端傳送資訊時,要求在資料包裡包含對方的id號。可以定義一個型別下列的資料結構對資料包進行封裝:
type
struct
_sdata
sdata,
*psdata;
9樓:騎富貴容嫻
你的檔案中的問題
//會阻塞程序,直到有客戶端連線上來為止
//既然是直到有客戶端連線上,那麼就要弄明白哪個是與客戶端連線的套接字//
sockclient就是與客戶端連線的套接字sockclient
=accept(sockserver,
(sockaddr*)&addrclient,&len);
//接收並列印客戶端資料
recv(sockclient,
recvbuf,
100,
0);printf("%s\n",
recvbuf);
//所以此處,應該把sockserver改為sockclientsend(/*sockserver*/sockclient,sendbuf,
100,
0);ps:伺服器客戶端通訊,是要保持伺服器與客戶端的連線。
而不能這樣立即關閉,如果設定不對,立即關閉,緩衝區的資料是會丟失的。那客戶端也就不會再收到資料了。
你可以加sleep(10000);來測是通訊過程//關閉socket
closesocket
(sockclient);
c語言socket程式設計,伺服器和一個客戶端連線時,伺服器能正常收到資訊,2個以上就出現bug了 100
10樓:
設定監聽socket的listen呢?
執行緒有自己的私有棧,即區域性變數
編寫一個簡單的tcp通訊程式。伺服器傳送「你好我是伺服器」,客戶端接收該資訊並顯示在螢幕上。用j**a寫
採用tcp協議,使用socket程式設計,編寫程式完成客戶端傳送訊息給服務端,服務端接到訊息後,再發
11樓:樹大沒風
服務端**:
/*server.c*/
#include
#include
#include
#include
#include
#include
#include
#include
#define port 4321
#define buffer_size 1024
#define max_que_conn_nm 5
int main()
printf("socket id = %d\n",sockfd);
/*設定sockaddr_in 結構體中相關引數*/
server_sockaddr.sin_family = af_inet;
server_sockaddr.sin_port = htons(port);
server_sockaddr.sin_addr.s_addr = inaddr_any;
bzero(&(server_sockaddr.sin_zero), 8);
int i = 1;/* 使得重複使用本地地址與套接字進行繫結 */
/*繫結函式bind*/
printf("bind success!\n");
/*呼叫listen函式*/
if (listen(sockfd, max_que_conn_nm) == -1)
printf("listening....\n");
/*呼叫accept函式,等待客戶端的連線*/
/*呼叫recv函式接收客戶端的請求*/
memset(buf , 0, sizeof(buf));
if ((recvbytes = recv(client_fd, buf, buffer_size, 0)) == -1)
printf("received a message: %s\n", buf);
if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
close(sockfd);
exit(0);
} 客戶端:
/*client.c*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 4321
#define buffer_size 1024
int main(int argc, char *ar**)
/*地址解析函式*/
if ((host = gethostbyname(ar**[1])) == null)
memset(buf, 0, sizeof(buf));
sprintf(buf, "%s", ar**[2]);
/*建立socket*/
if ((sockfd = socket(af_inet,sock_stream,0)) == -1)
/*設定sockaddr_in 結構體中相關引數*/
serv_addr.sin_family = af_inet;
serv_addr.sin_port = htons(port);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero), 8);
/*呼叫connect函式主動發起對伺服器端的連線*/
/*傳送訊息給伺服器端*/
if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
if ((recvbytes = recv(sockfd, buf, buffer_size, 0)) == -1)
close(sockfd);
exit(0);}
用c語言設計簡單的網路計費系統,用C語言設計簡單的網路計費系統
include include void main printf s d n shizi,sum 怎樣用c語言設計一個簡單的計算器 利用c語言設計簡單的小學生算術自測系統,求大神編寫程式 include include include define number 10 定義陣列專案的個數為一個符號常...
誰會用C語言編譯簡單的孔明棋啊!有幫幫我吧!在此謝過大神了
幻汐花之都 include stdio.h include stdlib.h include windows.h void printnow char a 10 11 printf n i void sxzy char a 10 11 int m,int n,int w int check fan ...
c在c語言程式設計裡是做什麼用的, c 在C語言程式設計裡是做什麼用的??
山大威海校區 通過你的描述我大概知道你要表述的意思了,fscanf是進行檔案讀取操作,而檔案中資料的存放格式是用中間 來描述規範的,當然,第一項大家都知道,是開啟檔案的指標 file,這裡是output fopen 至於第三項,是要儲存的位置,你的情況是 c字元,而 c就是檔案中的間隔符。 百小度 ...