资源简介
一个可以用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个文件信息
评论
共有 条评论