資源簡介
一個可以用c語言實現多人聊天的程序,運用socket編寫。

代碼片段和文件信息
/*
?*title:?client.c
?*start_time:?Mar.18?2011
?*end_time:??Apr.8?2011
?*/
#include?“i.h“
#define?START_PORT?8089
struct?sockaddr_in?my_addr;
int?my_id;
int?my_log();/*?declare?funtion*/
/*?*/
int?i_send_msg()
{
int?id;
struct?msg?the_msg;
char?end?=?‘@‘;
printf(“input?recver?id:“);
scanf(“%d“?&id);
getchar();
printf(“\ninput?content:“);
i_input(the_msg.content);
char?flag?=?‘y‘;
if?(1)
{
the_msg.flag?=?1;
the_msg.id_from?=?my_id;
the_msg.id_to?=?id;
i_sendto(sockfd?&the_msg?sizeof(struct?msg)?0
(struct?sockaddr*)&server?sizeof(struct?sockaddr));
i_saveto_chat(&the_msg);?/*?save?to?history?*/
printf(“send?to?id:%d?success.\n“?my_id);
return(0);
}
else
return(1);
return(0);
}
int?reply()
{
return(0);
}
int?send_file()
{
return(0);
}
/**/
/*?start:initialize?*/
int?init()
{
struct?ifreq?req;
struct?sockaddr_in?*host;
int?port;
i_init();
/*?init?user?addr?*/
bzero(&my_addr?sizeof(struct?sockaddr));
my_addr.sin_family?=?AF_INET;
strcpy(req.ifr_name?“lo“);
if?(?ioctl(sockfd?SIOCGIFADDR?&req)?0?)?/*?get?local?ip?address?*/
{
perror(“get?local?ip?error“);
exit(1);
????????}?
host?=?(struct?sockaddr_in*)&(req.ifr_addr);
printf(“ip:?%s\n“?inet_ntoa(host->sin_addr));
memcpy(&my_addr?(struct?sockaddr_in*)&(req.ifr_addr)
?sizeof(struct?sockaddr_in));
port?=?START_PORT;
do?
{
port++;
my_addr.sin_port?=?htons(port);
bind(sockfd?(struct?sockaddr*)&my_addr
?sizeof(struct?sockaddr));?
}?
while?(errno?==?EADDRINUSE);
struct?chat_history?apple;
memset(&apple?‘b‘?HSTR_LEN);
i_lseek(mainfd?0?SEEK_SET);
apple.count?=?0;
i_write(mainfd?&apple?HSTR_LEN);
i_lseek(mainfd?-HSTR_LEN?SEEK_END);
i_read(mainfd?&apple?HSTR_LEN);
count?=?apple.count;
??
printf(“port:%d\n“?port);
printf(“init?successful!!!\n“);
return(0);
}
/*?end:initialize?*/
/*?start:chat_history*/
int?get_page_size()
{
struct?chat_history?page_size_reader;
i_lseek(mainfd?-HSTR_LEN?SEEK_END);
i_read(mainfd?&page_size_reader?HSTR_LEN);
return(page_size_reader.count);
}
int?read_chat_history()
{
printf(“****char*history***“);
printf(“(n-nextpage;?p-prepage;?q-quit)\n“);
int?page_num;/*?*/
int?remains;
int?berry?=?get_page_size();
page_num?=?berry?/?8;
remains?=?berry?%?8;
if?(remains?!=?0)
page_num?++;
else
page_num?=?page_num;
printf(“there?are?%d?page?total?%d?items“?
page_num?berry);
int?i?=?-1;
while?(1)
{
char?flag;
if?((berry?+?i*8)?>=?0)
{
printf(“(%d~%d)\n“?(berry?+?i*8)?(berry?+?(i+1)*8));
i_print_history(PRT_LEN?i);
printf(“@@@\n“);
while?(‘\n‘?==?(flag?=?getchar()))
{
}
switch?(flag)
{
case?‘p‘?:
i--;
break;
case?‘n‘?:
i++;
break;
case?‘q‘?:
return(0);
default??:
break;
}
if?(i?>=?0)
{
printf(“have?at?the?end!\n“);
printf(“return?to?menu!\n“);
}
}
else?
{
printf(“(1~%d)\n“?remains);
i_print_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????22016??2015-12-09?10:25??C語言基于socket多人聊天(包含注冊登錄)\.vs\client\v14\.suo
????..A..H.?????25600??2015-12-09?10:22??C語言基于socket多人聊天(包含注冊登錄)\.vs\server\v14\.suo
?????文件???????8113??2013-08-08?16:20??C語言基于socket多人聊天(包含注冊登錄)\client.c
?????文件????2883584??2015-12-09?10:25??C語言基于socket多人聊天(包含注冊登錄)\client.sdf
?????文件????????939??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\client.sln
?????文件???????6260??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\client.vcxproj
?????文件????????960??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.log
?????文件????????686??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.tlog\CL.command.1.tlog
?????文件???????1556??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.tlog\CL.read.1.tlog
?????文件????????362??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.tlog\CL.write.1.tlog
?????文件????????222??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.tlog\client.lastbuildstate
?????文件??????????0??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.tlog\unsuccessfulbuild
?????文件??????19456??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\vc140.idb
?????文件??????53248??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\vc140.pdb
?????文件??????33792??2015-12-09?10:23??C語言基于socket多人聊天(包含注冊登錄)\Debug\vc60.idb
?????文件??????28672??2015-12-09?10:23??C語言基于socket多人聊天(包含注冊登錄)\Debug\vc60.pdb
?????文件???????4768??2013-08-08?16:20??C語言基于socket多人聊天(包含注冊登錄)\i.h
?????文件???????6083??2013-08-08?16:20??C語言基于socket多人聊天(包含注冊登錄)\server.c
?????文件?????393216??2015-12-09?10:22??C語言基于socket多人聊天(包含注冊登錄)\server.sdf
?????文件????????939??2015-12-09?10:22??C語言基于socket多人聊天(包含注冊登錄)\server.sln
?????文件???????6260??2015-12-09?10:22??C語言基于socket多人聊天(包含注冊登錄)\server.vcxproj
?????目錄??????????0??2015-12-09?10:08??C語言基于socket多人聊天(包含注冊登錄)\.vs\client\v14
?????目錄??????????0??2015-12-09?10:09??C語言基于socket多人聊天(包含注冊登錄)\.vs\server\v14
?????目錄??????????0??2015-12-09?10:08??C語言基于socket多人聊天(包含注冊登錄)\.vs\client
?????目錄??????????0??2015-12-09?10:09??C語言基于socket多人聊天(包含注冊登錄)\.vs\server
?????目錄??????????0??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Debug\client.tlog
?????目錄??????????0??2015-12-09?10:22??C語言基于socket多人聊天(包含注冊登錄)\Debug\server.tlog
????...D.H.?????????0??2015-12-09?10:09??C語言基于socket多人聊天(包含注冊登錄)\.vs
?????目錄??????????0??2015-12-09?10:22??C語言基于socket多人聊天(包含注冊登錄)\Backup
?????目錄??????????0??2015-12-09?10:24??C語言基于socket多人聊天(包含注冊登錄)\Backup1
............此處省略5個文件信息
評論
共有 條評論