资源简介
基于C语言的多人聊天室,C/S结构,可在在linux系统下运行,附有report和源码,使用mysql数据库,当有用户进入聊天室时,会通知所有人
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFFER_SIZE 1024
#define FILE_NAME_MAX_SIZE 1024
#define HELLO_WORLD_SERVER_PORT 6666
struct sockaddr_in clientaddr;
pid_t pid;
int clientfdsendbytesrecvbytes;
struct hostent *host;
char *buf*buf_r;
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *i;
char *userid;
char *userpwd;
char sql[1024];
char *Name;
ssize_t r_write(int fd void *buf size_t size) {
char *bufp;
size_t bytestowrite;
ssize_t byteswritten;
size_t totalbytes;
for (bufp = buf bytestowrite = size totalbytes = 0;
bytestowrite > 0;
bufp += byteswritten bytestowrite -= byteswritten) {
byteswritten = write(fd bufp bytestowrite);
if ((byteswritten) == -1 && (errno != EINTR))
return -1;
if (byteswritten == -1)
byteswritten = 0;
totalbytes += byteswritten;
}
return totalbytes;
}
sendfile(void *ppid_t id)
{
int client_socket = socket(AF_INETSOCK_STREAM0);
client_socket = *(int *)p;
char file_name[FILE_NAME_MAX_SIZE+1];
bzero(file_name FILE_NAME_MAX_SIZE+1);
printf(“Please Input File Name On Server:\t“);
scanf(“%s“ file_name);
char buffer[BUFFER_SIZE];
bzero(bufferBUFFER_SIZE);
strncpy(buffer file_name strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name));
//鍚戞湇鍔″櫒鍙戦€乥uffer涓殑鏁版嵁
send(client_socketbufferBUFFER_SIZE0);
int fp = open(file_name (O_WRONLY|O_CREAT|O_EXCL)(S_IRUSR | S_IWUSR));
if( fp < 0 )
// FILE * fp = fopen(file_name“w“);
// if(NULL == fp )
{
printf(“File:\t%s Can Not Open To Write\n“ file_name);
exit(1);
}
//浠庢湇鍔″櫒鎺ユ敹鏁版嵁鍒癰uffer涓? bzero(bufferBUFFER_SIZE);
ssize_t length = 0;
length = recv(client_socketbufferBUFFER_SIZE0);
if(length < 0)
{
printf(“Recieve Data From Server Failed!\n“);
exit(1);
}
int write_length = r_write(fp bufferlength);
// int write_length = fwrite(buffersizeof(char)lengthfp);
if (write_length {
printf(“File:\t%s Write Failed\n“ file_name);
exit(1);
}
memset(buffer‘\0‘BUFFER_SIZE);
bzero(bufferBUFFER_SIZE);
printf(“Recieve File:\t %s From Server Finished\n“file_name);
close(fp);
// fclose(fp);
recv(client_socketbufferBUFFER_SIZE0);
// close(client_socket);
return 0;
}
void sigOut(int sigNum)
{
strcpy(bufName);
strcat(buf“ “);
memset(buf_r0100);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 226816 2009-11-04 22:57 project report.doc
文件 8289 2009-11-04 22:51 server5.c
文件 6465 2009-11-05 00:15 client5.c
----------- --------- ---------- ----- ----
241570 3
相关资源
- 维吉尼亚密码的加密和解密C语言实现
- 循环赛问题c语言代码
- C语言实现socket服务端和客户端
- 单处理器系统的进程调度+操作系统(
- C语言实现链表通讯录
- 求有向图所有顶点的出度与入度
- 用C8051F单片机写的中断控制程序C语言
- 纯C语言写的打字母游戏
- 模拟Unix文件系统C语言版
- 控制走黑白线的寻迹小车c语言程序
- C语言程序设计 单词替换程序
- K-means聚类算法c语言实现支持任意维数
- c语言实现哲学家就餐问题
- 用定时器计数器实现交通灯
- c语言实验贪吃蛇游戏大作业和实验报
- C语言模拟滑动窗口协议
- c语言单项选择题标准化考试系统设计
- 单片机C语言关键语句
- 人员信息管理系统c++版超详细
- NSGA2 C语言代码
- 互相关C语言程序xcorr
- C语言利用半曲线法查表实现arctan ar
- 计算学生的平均成绩c语言
- VS2010调用Keil实现单片机c语言编程
- 华农C语言题目及答案(完整版)
- 步进电机的控制程序,用C语言编写!
- c语言代码循迹智能小车+proteus仿真
- 酒店房间登记与计费管理系统
- 分水岭算法C语言实现
- 班级通讯录管理系统C语言课程设计
评论
共有 条评论