资源简介
以前写的网络编程,压缩包内包括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
- 上一篇:家族族谱管理,数据结构
- 下一篇:电动汽车有序充放电
相关资源
- 操作系统实验全部题目+完整代码:
- 实验一Linux系统安装与简单配置
- 基于Linux在ARM开发板上电子相框的c程
- 五子棋 Linux make
- 尚硅谷周阳老师Linux附脑图mmap
- Linux搭建ffmpeg+red5操作指南.docx
- 兄弟连新版Linux全套资料百度云.txt
- Linux下多线程判断九宫格是否有效
- Debian Linux服务器资料
- Linux常用命令.xmind
- Xilinx Zynq SoC与嵌入式Linux设计实战指南
- openkeeper
- apt安装包linux
- linux 添加字符设备驱动程序及测试程
- weblogic集群部署步骤详细相关文档资料
- LINUX下的MODBUS-RTU驱动程序
- jdk-8u261-x64(含linuxwindowsmacos)
- linux下基于QT和v4l2驱动的USB摄像头视频
- Zedboard ov7725板端Linux下tcp视频发送
- Linux上实现基于Socket_的多进程实时通
- xgcom-0.04.2源码
- linux下的一个异步通信的串口类
- Linux设备驱动
- Linux内存分配与回收
- linux gsm0710 CMUX串口多路复用源码
- 自己写的最方便的tcp客户端dll
- Linux Socket 基于GTK+聊天软件
- v4l2采集视频并保存和lcd显示
- Linux基于Live555从共享内存 获取rstp实时
- linux下二进制拆弹
评论
共有 条评论