Socket In C
来源:互联网 发布:php 偏移量 编辑:程序博客网 时间:2024/05/23 19:40
Socket In C
(2010-08-26 14:00:56)[编辑][删除]
标签:
c
socket
it
分类:C语言 摘自blog.sina.com.cn/rekkenSocket In C
环境
Socket编程需要linux系统
最终实现
1,远程控制 2,远程主机控制中控 3,中控负责转发命令和数据 4,采集器负责采集数据 具体: 1,采集器:具有接受命令,判断执行采集或者停止采集,并把采集到的数据发送到中控 2,中控:负责接受远程主机的数据,无条件的转发给采集器,并且能够将各个采集器发送到中控的数据转发的到远程主机 3,远程主机:复杂发送采集和停止采集命令。接收中控发送过来的采集数据,并做出分析(分析可能是后续步骤)
socket通信原理
什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求
服务器端的步骤如下。 (1)建立服务器端的Socket,开始侦听整个网络中的连接请求。 (2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。 (3)当完成通信后,服务器关闭与客户端的Socket连接。 客户端的步骤如下。 (1)建立客户端的Socket,确定要连接的服务器的主机名和端口。 (2)发送连接请求到服务器,并等待服务器的回馈信息。 (3)连接成功后,与服务器进行数据的交互。 (4)数据处理完毕后,关闭自身的Socket连接
建立连接
基本的TCP客户端的连接包括四个步骤: 1,利用socket(),建立一个TCP socket 2,利用connect()向主机(server)建立连接 3,使用send()和recv(),和主机(server)进行通信 4,关闭连接使用close()
多线程的拥塞问题
socket通过pthread_create(&id,NULL,(void *) thread,NULL)来创建新的线程,之前要#include <pthread.h> 在POSIX线程API中提供了一个pthread_cleanup_push()/pthread_cleanup_pop()函数对用于自动释放资源--从pthread_cleanup_push()的 调用点到pthread_cleanup_pop()之间的程序段中的终止动作(包括调用pthread_exit()和取消点终止)都将执行pthread_cleanup_push() 所指定的清理函数
发送命令
通过socket套接字,连接指定ip主机的指定端口,发送指定的内容
struct CmdCustom{ unsigned char iCode1; unsigned char iCode2; //unsigned char nodeID[4];unsigned int nodeId; unsigned short iCommand; unsigned short iLength; unsigned short crc;unsigned char buf[40]; };
通过次结构体,将带发送的内容进行封装,然后通过发送(data_send(clientfd,(char *)&cmd_mes,sizeof(struct CmdCustom))和接收(data_recv(clientfd,response))来通信 其中的data_send()和data_recv()为自定义函数,函数内部利用send()和recv()两个函数进行真正的数据发送和接收。 具体代码如下
int data_send(int sockfd,char *data,int length) { int sendbytes; int total=0;while(total<length){ if((sendbytes=send(sockfd,data+total,length-total,MSG_NOSIGNAL))==-1){errorlogs("send"); //close(sockfd); return -1; } total+=sendbytes; #ifdef DEBUG char s[30]; logs("***********************************/n");//logs():自定义函数,作用基本同printf();sprintf(s,"size %d data already send!/n",sendbytes); logs(s); logs("***********************************/n"); #endif } //memset(data,0,length); return total;}
Send File In C Socket
通过SOCKET发送文件可以按如下步骤进行操作:
1. Open socket connection to remote server. 2. Open file on local system. 3. Read x bytes from file on local system. 4. Write x bytes to socket. 5. Repeat 3 & 4 until all bytes have been read from file and transmitted to remote system. 6. Close file. 7. Close socket.
- Socket In C
- Send File In C Socket
- Send File In C Socket
- socket in C and Java
- Asynchronous Socket Programming in C#: Part I
- Asynchronous Socket Programming in C#: Part II
- Asynchronous Socket Programming in C#: Part II
- Socket programming in C on Linux | tutorial
- TCP/IP socket programming in C(一)
- TCP/IP socket programming in C(二)
- TCP/IP socket programming in C(三)
- C#Socket
- C#socket
- C#.Socket
- socket.c
- c socket
- C#socket
- C socket
- 8月 创造未来
- 天天向上
- FLEX 分页控件(转)
- 愁
- 调用函数
- Socket In C
- Send File In C Socket
- Linux开发--学习流程《转》
- 自定义转化器
- 叹
- JAVA万年历
- 传递给不甘平庸的人(刘一秒经典语录)
- 一个JAVA小虾米初入江湖
- java要学完了