linux与window间soket通信
来源:互联网 发布:软件简介怎么写 编辑:程序博客网 时间:2024/05/16 06:37
最近在做一个项目要求实现window与Linux间的soket通信,不是Linux做服务器而是Windows做服务器,原因是需要Linux通过soket发数据给Windows控制Windows上的程序。所以需要Linux做客户端。
Windows server
#include "stdafx.h"#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")int main(int argc, char* argv[]){ //初始化WSA WORD sockVersion = MAKEWORD(2,2); WSADATA wsaData; if(WSAStartup(sockVersion, &wsaData)!=0) { return 0; } //创建套接字 SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(slisten == INVALID_SOCKET) { printf("socket error !"); return 0; } //绑定IP和端口 sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = htons(8888); sin.sin_addr.S_un.S_addr = INADDR_ANY; if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) { printf("bind error !"); } //开始监听 if(listen(slisten, 5) == SOCKET_ERROR) { printf("listen error !"); return 0; } //循环接收数据 SOCKET sClient; sockaddr_in remoteAddr; int nAddrlen = sizeof(remoteAddr); char revData[1024]; printf("等待连接...\n"); sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen); if(sClient == INVALID_SOCKET) { printf("accept error !"); } printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr)); while (true) { //接收数据 int ret = recv(sClient, revData, 1024, 0); if(ret > 0) { revData[ret] = 0x00; printf(revData); }else{printf("side have close");exit(0);} //发送数据 //char * sendData = "hi guest user\n";char *comm="starttest\n";if(strcmp(comm,revData)==0){printf("im start power test");} send(sClient, revData, strlen(revData), 0); // closesocket(sClient); } closesocket(slisten); WSACleanup(); return 0;}
Linux clc
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <fcntl.h>#include <sys/shm.h>#define MYPORT 8888#define BUFFER_SIZE 1024int main(){ ///定义sockfd int sock_cli = socket(AF_INET,SOCK_STREAM, 0);if(sock_cli==-1)printf("fun soket"); ///定义sockaddr_in struct sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(MYPORT); ///服务器端口 servaddr.sin_addr.s_addr = inet_addr("192.168.227.1"); ///服务器ip ///连接服务器,成功返回0,错误返回-1 if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { perror("connect"); exit(1); } char sendbuf[BUFFER_SIZE]; char recvbuf[BUFFER_SIZE]; while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL) { send(sock_cli, sendbuf, strlen(sendbuf),0); ///发送 if(strcmp(sendbuf,"exit\n")==0) break; recv(sock_cli, recvbuf, sizeof(recvbuf),0); ///接收 fputs(recvbuf, stdout); memset(sendbuf, 0, sizeof(sendbuf)); memset(recvbuf, 0, sizeof(recvbuf)); } close(sock_cli); return 0;}以上代码都是通过网友提供我自己加以整改后的代码。
阅读全文
0 0
- linux与window间soket通信
- soket通信
- 关于 ubantu与 linux arm开发板的 tcp soket 通信
- linux与window socket通信
- cocos2dx 网络通信 soket
- JAVA Soket、ServerSocket通信
- JAVA soket通信
- Linux 与Window之间的通信
- WINDOW与LINUX的TCP/IP通信
- soket的udp及时通信
- Linux 下的soket编程
- linux soket编程(tcp)
- soket 与tcp/ip关系
- 代码演示 Java Soket 通信流
- Window与WMS通信过程
- Window & Linux 进程间通信方式(IPC)
- 检测linux系统支持的soket选项
- 关于 window c++ 编译 soket 重复定义的问题
- CodeFroces 822C.Hacker, pack your bags!(sorting+线性枚举)
- 浅谈javaweb三大框架和MVC设计模式
- leetcode 546. Remove Boxes
- 用jupyter notebook打开.ipynb文件
- swift 懒加载
- linux与window间soket通信
- storm基础知识
- JSP内置对象request的方法的使用
- 【Java基础之设计模式】代码库(三)
- Android图文混排
- ubuntu下修改tab键为4个空格
- python快速入门(3)循环结构
- Zookeeper原生API-ZkClient-Curator对比
- adb源码和版本声明