snowai请教几个问题?谢谢!!
php生成word文档 php生成pdf文档方法。谢谢了
作者 小晖 发布于 0000-00-00 分类:php基础编程
这东西结合PHP是怎么用Y??
我不懂C,学习学习//
[PHP]
基于Socket通讯技术的chat server
作者/来源:leex
基于Socket通讯技术的chat server(c程序)
/*
Chat Server Test
program by leex(1999/12/6 4:51)
compile under redhat linux 6.0
*/
#include
#include
#include
#include
#include
#include
#define SERV_PORT 6666
#define INTERVAL 3
#define SPOOLFILE "spool.dat"
#define MAXLINE 4096
#define TALKERNAMELEN 20
#define MSGLEN 80
typedef struct{
int magic;
int msgcount;
}SPOOLFILEHEADER;
typedef struct{
char talkername[TALKERNAMELEN];
char msg[MSGLEN];
}MSGBODY;
void str_serv(int connfd,struct sockaddr_in *cliaddr);
void createspool();
void addtospool(char *talkername,char *chatmsg);
int main()
{
int listenfd,connfd;
struct sockaddr_in servaddr,cliaddr;
int clilen;
int childpid;
void sig_child();
createspool();
listenfd = socket(AF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
bind(listenfd,&servaddr,sizeof(servaddr));
listen(listenfd,5);
signal(SIGCLD,sig_child);
for(;;){
clilen = sizeof(cliaddr);
connfd = accept(listenfd,&cliaddr,&clilen);
if((childpid = fork()) == 0){
close(listenfd);
str_serv(connfd,&cliaddr);
exit(0);
}
close(connfd);
}
}
void str_serv(int connfd,struct sockaddr_in *cliaddr)
{
char *r200 = "HTTP/1.1 200
";
char *header = "Content-type:text/html
";
char *end = "
";
char *autoscroll = "";
char *info = "你 说:这是一条测试信息!
";
int curpos;
FILE *file;
SPOOLFILEHEADER fheader;
MSGBODY msg;
char chatmsg[MAXLINE];
int i;
curpos = 0;
addtospool((char *)inet_ntoa(cliaddr->sin_addr),"
各位朋友,大家好");
write(connfd,r200,strlen(r200));
write(connfd,header,strlen(header));
write(connfd,end,strlen(end));
write(connfd,"",6);
write(connfd,autoscroll,strlen(autoscroll));
while(1){
file = fopen(SPOOLFILE,"r");
fread(&fheader,sizeof(SPOOLFILEHEADER),1,file);
fseek(file, sizeof(SPOOLFILEHEADER)+curpos*sizeof(MSGBODY), SEEK_SET
);
for(i=0;i fread(&msg,sizeof(MSGBODY),1,file);
snprintf(chatmsg,MAXLINE,"%s 说:%s
",
msg.talkername,msg.msg);
write(connfd,chatmsg,strlen(chatmsg));
}
fclose(file);
curpos = fheader.msgcount;
write(connfd,info,strlen(info));
sleep(INTERVAL);
}
write(connfd,"",6);
}
void sig_child()
{
int pid,stat;
while((pid = waitpid(-1,&stat,WNOHANG))>0)
addtospool("SYSOP","哈哈,某人掉线了!^_^
");
}
void createspool()
{
FILE *file;
SPOOLFILEHEADER fheader;
fheader.magic = 8888;
fheader.msgcount = 0;
file = fopen(SPOOLFILE,"w+");
fwrite(&fheader,sizeof(SPOOLFILEHEADER),1,file);
fclose(file);
}
void addtospool(char *talkername,char *chatmsg)
{
FILE *file;
SPOOLFILEHEADER fheader;
MSGBODY msg;
snprintf(msg.talkername,TALKERNAMELEN,"%s",talkername);
snprintf(msg.msg,MSGLEN,"%s",chatmsg);
file = fopen(SPOOLFILE,"a");
fwrite(&msg,sizeof(MSGBODY),1,file);
fclose(file);
file = fopen(SPOOLFILE,"r+");
fread(&fheader,sizeof(SPOOLFILEHEADER),1,file);
fheader.msgcount += 1;
fseek(file, 0L, SEEK_SET);
fwrite(&fheader,sizeof(SPOOLFILEHEADER),1,file);
fclose(file);
}
[/PHP]
逛论坛交流:基于Socket通讯技术的chat server(《PHP精华文摘》)
0 条回复
回复