socket例項C語言 乙個簡單的聊天程式

2021-08-28 21:46:19 字數 2875 閱讀 1596

我們老師讓寫乙個簡單的聊天軟體,並且實現不同機子之間的通訊,我用的是socket程式設計。不廢話多說了,先附上**:

伺服器端server.c

#include #include #include #include #include #include #include #include #include #include #define buflen 1024 

#define port 6666

#define listnum 20

int main()

else

printf("socket create success!\n");

memset(&s_addr,0,sizeof(s_addr));

s_addr.sin_family = af_inet;

s_addr.sin_port = htons(port);

s_addr.sin_addr.s_addr = htons(inaddr_any);

/*把位址和埠幫定到套接字上*/

if((bind(sockfd, (struct sockaddr*) &s_addr,sizeof(struct sockaddr))) == -1)else

printf("bind success!\n");

/*偵聽本地埠*/

if(listen(sockfd,listnum) == -1)else

printf("the server is listening!\n");

while(1)else

printf("正在與您聊天的客戶端是:%s: %d\n",inet_ntoa(c_addr.sin_addr),ntohs(c_addr.sin_port));

while(1)else if(retval == 0)else

len = send(newfd,buf,strlen(buf),0);

if(len > 0)

printf("\t訊息傳送成功:%s\n",buf);

else

} /*客戶端發來了訊息*/

if(fd_isset(newfd, &rfds))

} }

} /*關閉聊天的套接字*/

close(newfd);

/*是否退出伺服器*/

printf("伺服器是否退出程式:y->是;n->否? ");

bzero(buf, buflen);

fgets(buf,buflen, stdin);

if(!strncasecmp(buf,"y",1))

} /*關閉伺服器的套接字*/

close(sockfd);

return 0;

}

客戶端client.c

#include #include #include #include #include #include #include #include #include #include #define buflen 1024

#define port 6666

int main(int argc, char **argv)

else

printf("socket create success!\n");

/*設定伺服器ip*/

memset(&s_addr,0,sizeof(s_addr));

s_addr.sin_family = af_inet;

s_addr.sin_port = htons(port);

if (inet_aton(argv[1], (struct in_addr *)&s_addr.sin_addr.s_addr) == 0)

/*開始連線伺服器*/

if(connect(sockfd,(struct sockaddr*)&s_addr,sizeof(struct sockaddr)) == -1)else

printf("conncet success!\n");

while(1)else if(retval == 0)else

}/*使用者輸入資訊了,開始處理資訊並傳送*/

if(fd_isset(0, &rfds))

len = send(sockfd,buf,strlen(buf),0);

if(len > 0)

printf("\t訊息傳送成功:%s\n",buf);

else }}

}/*關閉連線*/

close(sockfd);

return 0;

}

在程式的服務端輸入

lwp@lwp-linux:~/desktop/1234$ ./server 

在程式的客戶端輸入

lwp@lwp-linux:~/desktop/1234$ ./client 192.168.100.80

server端:

waiting...

waiting...

waiting...

nihal

訊息傳送成功:nihal

客戶端發來的資訊是:zhuzhu

hehe

訊息傳送成功:hehe

客戶端發來的資訊是:haha

客戶端退出了,聊天終止!

伺服器是否退出程式:y->是;n->否? y

server端退出。

client端:

waiting...

waiting...

waiting...

伺服器發來的訊息是:nihal

zhuzhu

訊息傳送成功:zhuzhu

伺服器發來的訊息是:hehe

haha

訊息傳送成功:haha

C 乙個WCF簡單例項

以訂票為例簡單應用wcf程式,需要的朋友可以參考下 wcf例項 帶步驟 複製 如下 在iservice1.cs定義服務契約 複製 如下 namespace wcfdemo 使用下面示例中說明的資料約定將復合型別新增到服務操作。datacontract 資料契約 public class ticket...

乙個完整的c語言程式 簡單的例項

本例項要實現的功能是根據父母的身高 兒子的身高。本例項中定義乙個常量0.54,根據輸入父親和母親的身高,通過計算公式 兒子身高 父親身高 母親身高 x 0.54 出兒子的身高,具體 如下 include 包含標頭檔案 define heg 0.54 定義常量 float height float f...

02乙個簡單的c語言例項(hello world)

二 結構分析 三 增強程式可讀性 四 程式除錯 include intmain void 乙個簡單的c程式 一 內容分析 include 在c世界中,人們稱出現在檔案頂部的資訊集合為頭,c實現通常都帶有許多標頭檔案。標頭檔案可以定義常量,或者說明函式名以及該函式如何使用。但是函式的實際 被包含在乙個...