资源简介
以前写的网络编程,压缩包内包括TCP客户端和TCP服务器,用到线程,编译时记得加上-lpthread

代码片段和文件信息
#include
#include
#include
#include
#include
void *recv_handler(void *arg);
int main(int argc char **argv)
{
if(argc < 3)
{
printf(“using:app ip port\n“);
return -1;
}
//1.创建套接字
int sockfd = socket(AF_INET SOCK_STREAM 0);
if(sockfd < 0)
{
perror(“socket fail“);
return -1;
}
//2.连接服务器
struct sockaddr_in servaddr;
bzero(&servaddr sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(atoi(argv[2]));
servaddr.sin_addr.s_addr = inet_addr(argv[1]);
int ret = connect(sockfd (struct sockaddr*)&servaddr sizeof(servaddr));
if(ret < 0)
{
perror(“connect fail:“);
close(sockfd);
return -1;
}
//启动线程用来专门读取数据
pthread_t id =0;
ret = pthread_create(&id NULL recv_handler (void *)&sockfd);
pthread_detach(id);
int selfid = 0;
printf(“selfid:“);scanf(“%d“ &selfid);
while(1)
{
int toid = 0;
char data[1024]={0};
printf(“toid:“);scanf(“%d“ &toid);
printf(“data:“);scanf(“%s“ data);
char sendbuf[1024]={0};
sprintf(sendbuf “id:%dto:%ddata:%s“ selfid toid data);
write(sockfd sendbuf strlen(sendbuf)+1);
}
close(sockfd);
return 0;
}
void *recv_handler(void *arg)
{
int sockfd= *((int *)arg);
//读取客户端数据
char recvbuf[1024]={0};
while(1)
{
int ret = read(sockfd recvbuf 1024);//阻塞
if(ret <= 0)
{
//客户端掉线
break;
}
printf(“recvbuf = %s\n“ recvbuf);
memset(recvbuf 0 sizeof(recvbuf));
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1546 2018-01-09 10:16 tcpclient.c
文件 2856 2018-01-09 11:08 tcp_tran_server.c
- 上一篇:家族族谱管理,数据结构
- 下一篇:电动汽车有序充放电
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- CVI下的TCP服务器和客户端
- linux下用多进程同步方法解决生产者
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
- linux扫雷游戏代码
- CAN Linux驱动代码
- Linux系统教材
- intel 82579LM 网卡驱动Linux系统版 v1.9.
- SA1110处理器掌上电脑液晶显示器设计
- 基于Linux的串口服务器设计
评论
共有 条评论