最近要要搞个linux的管理软件,管理端是windows的,于是乎就想到了socket!不知道是否还有新的方法。 windows端为client端,代码如下 #include<Winsock2.h> #include<stdio.h> void main(){ int i; char recvBuffer[255]; WORD wVersionRequested; //typedef unsigned short WORD; 2字节 WSADATA wsaData; //WSADATA 包含了Windows Socket执行的信息。 int err; wsaData.wVersion =MAKEWORD(1,1); //这个宏创建一个被指定变量连接而成的WORD变量。返回一个WORD变量。 //第一个是socket库版本,第二个是取得的版本号。 err=WSAStartup(wVersionRequested,&wsaData); //return 0 if successful if(err!=0){ printf("Call WSAStart ERROR!"); exit(1); } //终止对WinSock库的使用 //if(LOBYTE(wsaData.wVersion)!=1|| HIBYTE(wsaData.wHighVersion)!=1) //{ // WSACleanup(); // exit(0); //} //typedef u_int SOCKET;//创建用与监听的套接字 SOCKET SocketClient=socket(AF_INET,SOCK_STREAM,0); //0表示让系统自己选择协议 //定义地址结构体//填入服务器端的ip地址和端口号 SOCKADDR_IN addrSrv; //转换为TCP/IP network byte order //32bit addrSrv.sin_addr.S_un.S_addr=inet_addr("10.130.36.161"); //ip 192.168.0.130 addrSrv.sin_family=AF_INET; //family address addrSrv.sin_port=htons(6000); //16bit端口号 printf("Connect to server.../n"); i=connect(SocketClient,(sockaddr *)&addrSrv,sizeof(SOCKADDR_IN)); //指向要建立连接的数据结构 if(i<0){ printf("%in",WSAGetLastError()); printf("连接到127.0.0.1错误!"); exit(1); } recv(SocketClient,recvBuffer,255,0); printf("%s/n",recvBuffer); //send(socketClient,recvBuffer,20,0); closesocket(SocketClient); WSACleanup(); return; } linux为server端,代码如下 #include <sys/socket.h> #include <sys/types.h> #include <strings.h> #include <stdio.h> #include <stdlib.h> #include <arpa/inet.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main(int argc, char *argv[]) { int servFd; struct sockaddr_in addrServ, addrClient; socklen_t len; int connectFd; char mesg[100]; int err; addrServ.sin_family = AF_INET; addrServ.sin_addr.s_addr=htonl(INADDR_ANY); addrServ.sin_port=htons(6000); servFd = socket(AF_INET, SOCK_STREAM,0); len = sizeof(addrServ); err = bind(servFd,(struct sockaddr*)&addrServ, len); if (err == -1) printf("bind error!/n"); listen(servFd, 5); while(1) { connectFd = accept(servFd, (struct sockaddr*)&addrClient, &len); if (connectFd == -1) printf("connect error!"); bzero(mesg, 100); sprintf(mesg, "welcome %s to Redhat!",inet_ntoa(addrClient.sin_addr)); send(connectFd, mesg, strlen(mesg)+1, 0); } close(connectFd); close(servFd); return 0; }