资源简介
压缩包内包含客户端imclient.c 服务端imserver.c 以及makefile,测试在64位centos机器下运行,需要安装mysql数据。程序流程,客户端通过读取图片数据然后通过socket将图片数据发送给服务端,服务端接收数据后,插入数据库。注意;数据库字段位blob类型,UTF8编码格式。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int PtTcpSnd(int sockfd char *buffer int length)
{
int len;
int totalcnt;
totalcnt = 0;
printf(“Now Send Socket[%d]...“sockfd);
while(totalcnt < length)
{
len = write(sockfd buffer + totalcnt length - totalcnt);
printf(“Send Socket len[%d]“len);
if (len < 0)
{
if (errno == EINTR)
{
len = 0;
break;
}
else
return(-1);
}
else if (len == 0)
break;
totalcnt = totalcnt + len;
}
return(totalcnt);
}
int main()
{
int cfd;
struct sockaddr_in s_add;
unsigned short portnum=12306;
printf(“Hellowelcome to client !\r\n“);
cfd = socket(AF_INET SOCK_STREAM 0);
if(-1 == cfd)
{
printf(“socket fail ! \r\n“);
return -1;
}
printf(“socket ok !\r\n“);
bzero(&s_addsizeof(struct sockaddr_in));
s_add.sin_family=AF_INET;
s_add.sin_addr.s_addr= inet_addr(“127.0.0.1“);
s_add.sin_port=htons(portnum);
if(-1 == connect(cfd(struct sockaddr *)(&s_add) sizeof(struct sockaddr)))
{
printf(“connect fail !\r\n“);
return -1;
}
printf(“connect ok !\r\n“);
FILE *fp = fopen(“qr.jpg“ “rb“);
if (fp == NULL)
{
fprintf(stderr “cannot open image file\n“);
exit(1);
}
fseek(fp 0 SEEK_END);
if (ferror(fp)) {
fprintf(stderr “fseek() failed\n“);
int r = fclose(fp);
if (r == EOF) {
fprintf(stderr “cannot close file handler\n“);
}
exit(1);
}
int flen = ftell(fp);
if (flen == -1) {
perror(“error occurred“);
int r = fclose(fp);
if (r == EOF) {
fprintf(stderr “cannot close file handler\n“);
}
exit(1);
}
fseek(fp 0 SEEK_SET);
if (ferror(fp)) {
fprintf(stderr “fseek() failed\n“);
int r = fclose(fp);
if (r == EOF) {
fprintf(stderr “cannot close file handler\n“);
}
exit(1);
}
char data[flen+1];
int size = fread(data 1 flen fp);
if (ferror(fp)) {
fprintf(stderr “fread() failed\n“);
int r = fclose(fp);
if (r == EOF) {
fprintf(stderr “cannot close file handler\n“);
}
exit(1);
}
int r = fclose(fp);
if (r == EOF) {
fprintf(stderr “cannot close file handler\n“);
}
printf(“%d\n [%#x]\n“ size data);
if (PtTcpSnd(cfd data size) < 0) {
printf(“sending on stream socket“);
close(cfd);
exit(0);
}
close(cfd);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2905 2015-05-22 09:07 imserver.c
文件 348 2015-05-22 09:07 makefile
文件 2957 2015-05-22 09:07 imclient.c
----------- --------- ---------- ----- ----
6210 3
- 上一篇:des算法的c语言实现c源代码
- 下一篇:后缀表达式求值c语言版
相关资源
- 后缀表达式求值c语言版
- des算法的c语言实现c源代码
- Marching cubes C++ 源代码
- Vc++6.0MFC入门教程,很好的资源。
- VC++6.0 MFC 超简易计算器
- C++画数学函数图象
- c++实现数字转换英文无and
- C语言 地图染色 非递归 源代码
- c++利用数组实现简单的奇偶校验
- C语言实现英汉、汉英词典功能
- 基于c#的RGB转yuv程序
- 最新华为C语言编程规范
- c语言编程中点画线法
- LDPC算法C语言实现
- 学生信息管理系统c语言
- RSA加密算法c语言
- C++实现软件自动更新(update)
- nRF24LE1实验例程
- c++遗传算法,用bitset实现
- 个人账户管理系统修改版C语言版
- 基于CnComm v1.51和vc2013的串口调试软件
- VC++ OPC客户端程序
- C++纸牌游戏——21点
- FFT C语言实现
- MFC开发的与服务器通讯程序
- 合并一个文件夹中的所有文件.cpp
- 大整数乘法全解绝对可运行C++
- 基于c语言的多人聊天室系统
- 维吉尼亚密码的加密和解密C语言实现
- 循环赛问题c语言代码
评论
共有 条评论