⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qqser.c

📁 本人在5年前做的一个unix/aix下的一个聊天软件
💻 C
字号:
/****************************************************************
** 程序名称: qq.c (QQ宝贝,unix下的客户机程序)                  **
** 作者    : 关辉                                              **
** 版本    : 1.0                                               ** 
** 修改时间: 2003年3月6号                                      **
** 功能    : UNIX下的聊天软件,可以双方相互对话                 **
*****************************************************************/

#define  SCO 
#include	<stdio.h>
#ifdef    SCO 
#include <sys/types.h>    
#include  <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <curses.h>
#endif

#ifdef   	AIX 
#include <sys/types.h>    
#include <netinet/in.h> 
#include <sys/socket.h>
#include <arpa/inet.h>
#include <curses.h>
#endif

#define ip0 "10.100.0.5"
#define ip1 "10.100.0.9"
int n,i,j,m;
char buf[19][1024];
picture()
{
move(0,10);
addstr("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
move(22,10);
addstr("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
move(4,12);
addstr("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
move(20,12);
addstr("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
for(m=1;m<22;m++)
{
    move(m,10);
    addstr("┃");
    move(m,70);
    addstr("┃");
}
move(1,34);
addstr("QQ宝贝");
move(2,30);
addstr("━━━━━━");
move(2,55);
addstr("作者:关辉");
move(3,55);
addstr("版本:1.0");
move(22,10);
addstr("┗");
move(22,70);
addstr("┛");
move(0,10);
addstr("┏");
move(0,70);
addstr("┓");
move(21,12);
addstr("自己:");
move(21,18);
refresh();

}

main()
{
struct sockaddr_in lo,se,zd;
int sock,socklen;
char c;
n=5;
i=0;
initscr();
clear();
picture();
socklen=sizeof(struct sockaddr_in);
sock=socket(AF_INET,SOCK_DGRAM,0);
if(sock<0)
{
   printf("连接失败\n");
   endwin();
   exit(1);
}
memset(&lo,0,socklen);
lo.sin_family=AF_INET;
lo.sin_port=htons(6800);
if(inet_pton(AF_INET,ip0,&lo.sin_addr)<=0)
{
   printf("本方IP地址错误\n");
   endwin();
   exit(2);
}
memset(&se,0,socklen);
se.sin_family=AF_INET;
se.sin_port=htons(6800);
if(inet_pton(AF_INET,ip1,&se.sin_addr)<=0)
{
   printf("对方IP地址错误\n");
   endwin();
   exit(3);
}
if(bind(sock,(struct sockaddr *)&lo,socklen)<0)
{
    printf("不能运行两个QQ宝贝,或端口出错 \n");
    endwin();
    exit(0);
}
while((c=getch())!='\n')
{
buf[n][i]=c;
i++;
}
move(5,12);
addstr(buf[n]);
move(21,18);
addstr("                                                                 ");
move(21,18);
refresh();
i=0;
if(sendto(sock,buf[n],strlen(buf[n]),0,(struct sockaddr *)&se,socklen)<0)
{
   printf("发送数据错误 \n");
   endwin();
   exit(0);
}

n++;

for(;;)
{
    j=recvfrom(sock,buf[n],100,0,(struct sockaddr *)&se,&socklen);
    if(j<0)
      {
        printf("接收数据错误\n");
        endwin();
        exit(2);
        }
 /*** add()确定显示在哪行上,如果大于19,就让每行都上移一行,即滚屏    **/
    add();
	n++;
    while((c=getch())!='\n')
       {
          buf[n][i]=c;
          i++;
        }

    add();
    move(21,18);
    addstr("                                                                 ");
    move(21,18);
    refresh(); 
    if(sendto(sock,buf[n],strlen(buf[n]),0,&se,socklen)<0)
      {
         printf("发送数据错误 \n");
         endwin();
         exit(0);
      }
	  n++;
    move(21,18);
    refresh();
   }
 endwin();
}


add() 
{
if(n==19)
{
/****
   m=n;
   for(n=6;n<20;n++)
    {
         strcat(buf[n-1],buf[n]);
         move(n,12);
         addstr(buf[n]);
         move(21,18);
     }
   refresh();
   n=m;
 }
 *****/
clear();
picture();
n=5;
move(n,12);
addstr(buf[n]);
}
else
   {
        move(n,12);
        addstr(buf[n]);
      }
  move(21,18);
  refresh();
  i=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -