• 大小: 531KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C/C++
  • 标签:

资源简介

一个可以用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个文件信息

评论

共有 条评论