windows的socket_tcp客服端端与linux的socket_tc服务端简单通讯
来源:互联网 发布:无人机编队表演算法 编辑:程序博客网 时间:2024/06/11 01:18
<strong><span style="font-size:18px;">linux下的服务端代码</span></strong>
<strong><span style="font-size:18px;">Server.cpp</span></strong>
#include <stdio.h>#include <sys/socket.h>#include <unistd.h>#include <sys/types.h>#include <netinet/in.h>#include <stdlib.h>#include <time.h>#include <arpa/inet.h> #define SERVER_PORT 20000 // define the defualt connect port id#define LENGTH_OF_LISTEN_QUEUE 10 //length of listen queue in server#define BUFFER_SIZE 255#define WELCOME_MESSAGE "welcome to connect the server. "int main(int argc, char **argv){ int servfd,clifd; struct sockaddr_in servaddr,cliaddr; if ((servfd = socket(AF_INET,SOCK_STREAM,0)) < 0) { printf("create socket error!\n"); exit(1); } bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERVER_PORT); servaddr.sin_addr.s_addr = htons(INADDR_ANY); if (bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0) { printf("bind to port %d failure!\n",SERVER_PORT); exit(1); } if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) < 0) { printf("call listen failure!\n"); exit(1); } while (1) { char buf[BUFFER_SIZE]; long timestamp; socklen_t length = sizeof(cliaddr); printf("waiting for client to connect!\n"); clifd = accept(servfd,(struct sockaddr*)&cliaddr,&length); if (clifd < 0) { printf("error comes when call accept!\n"); break; } else { printf("accept success!\n"); } strcpy(buf,WELCOME_MESSAGE); printf("from client,IP:%s,Port:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port)); timestamp = time(NULL); strcat(buf,"timestamp in server:"); strcat(buf,ctime(×tamp)); send(clifd,buf,BUFFER_SIZE,0); close(clifd); }//exit close(servfd); return 0;}
Windows下的客服端代码:
// Client.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <winsock2.h>#include <stdio.h>#include <stdlib.h>#define DEFAULT_BUFFER 255#define SERVER_PORT 20000 // define the defualt connect port id#define PORT 5000#define REUQEST_MESSAGE "welcome to connect the server.\n"char szServer[128],szMessage[1024];int main(int argc, char* argv[]){WSADATA wsd;SOCKET sClient;char szBuffer[DEFAULT_BUFFER];int ret;struct sockaddr_in server;struct hostent *host = NULL;//int servfd,clifd;// struct sockaddr_in servaddr,cliaddr;// SOCKET ClientSocket;// struct sockaddr_in ServerAddr;/*if (WSAStartup(MAKEWORD(2,0),&Ws)!=0){cout<<"Init Windows Socket Failed:: "<<GetLastError()<<endl;exit(1);}//Create SocketClientSocket =socket(AF_INET,SOCK_STREAM,0);if(ClientSocket==INVALID_SOCKET){cout<<"Create Socket Failed ::"<<GetLastError()<<endl;exit(1);}ServerAddr.sin_family=AF_INET;ServerAddr.sin_addr.S_un.S_addr=inet_addr(SERVER_ADDRESS);ServerAddr.sin_port=htons(PORT);memset(ServerAddr.sin_zero,0,8);Ret=connect(ClientSocket,(struct sockaddr *)&ServerAddr,sizeof(struct sockaddr));if (Ret==-1){cout<<"Connect Error:: "<<GetLastError()<<endl;exit(1);} else{cout<<"Connect Success"<<endl;}memset(connSuccess,0,8);if ((recvbytes=recv(ClientSocket, connSuccess,8, 0)) ==-1) {cout<<"recv wrong!"<<endl;exit(1);}cout<<"connect success "<<connSuccess<<endl;Ret=send(ClientSocket,sendBuffer,(int)strlen(sendBuffer),0);if (Ret==SOCKET_ERROR){cout<<"Send Info ERROR: "<<GetLastError()<<endl;}memset(recvBuffer,0,BUFSIZE);if ((recvbytes=recv(ClientSocket, recvBuffer, BUFSIZE, 0)) ==-1) {cout<<"recv wrong!"<<endl;exit(1);}// cout<<recvBuffer<<endl;closesocket(ClientSocket);WSACleanup();//add here */if (WSAStartup(MAKEWORD(2,2), &wsd) != 0){printf("Failed to load Winsock library!\n");return 1;}// Create the socket, and attempt to connect to the serversClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sClient == INVALID_SOCKET){printf("socket() failed: %d\n", WSAGetLastError());return 1;}server.sin_family = AF_INET;server.sin_port = htons(SERVER_PORT);server.sin_addr.s_addr = inet_addr("10.1.1.188");if (connect(sClient, (struct sockaddr *)&server,sizeof(server)) == SOCKET_ERROR){printf("connect() failed: %d\n", WSAGetLastError());return 1;}// Send and receive dataret = send(sClient, szMessage, strlen(szMessage), 0);if (ret == SOCKET_ERROR){printf("send() failed: %d\n", WSAGetLastError());}//else{//printf("Send '%s' \n", szMessage);ret = recv(sClient, szBuffer, DEFAULT_BUFFER, 0);if (ret == SOCKET_ERROR){printf("recv() failed: %d\n", WSAGetLastError());}else{//szBuffer[ret] = '\0';printf("RECV: '%s'\n",szBuffer);}//}closesocket(sClient);WSACleanup();printf("Hello World!\n");return 0;}
0 0
- windows的socket_tcp客服端端与linux的socket_tc服务端简单通讯
- windows的socket_tcp服务端与linux的socket_tcp客服端简单通讯
- windows的socket_tcp服务端与 windows的socket_tcp客服端简单通讯
- windows的socket_tcp服务端与windows的socket_tcp客服端简单通讯
- linux的socket_tcp服务端与 linux的socket_tcp客服端简单通讯
- 简单实现Linux和windows的通讯
- Socket_TCP的编程过程
- socket实现服务端与客户端的通讯
- android与服务端通讯的问题
- java--通过socket和多线程进行多个客服端与服务器的简单通讯--基于tcp
- 与Windows服务的通讯
- 关于FTP客服端与服务端连接的时候,连接方式主动与被动的问题
- 端端Clouduolc的安全机制
- C++ socket编程 实现服务端与客户端的通讯
- socket实现客户端与服务端的通讯(群聊)
- java TCP客户端与服务端之间的通讯
- Hessian与Java服务端通讯的传值测试
- socket编程 实现服务端与客户端的通讯
- 黑马程序员—— 反射总结
- linux_c开发(5-2)进程间通讯_管道通讯
- 分治法和指针求最大最小数
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(一)
- 基于kvo的观察者模式
- windows的socket_tcp客服端端与linux的socket_tc服务端简单通讯
- 怎样才是理想的程序员
- 插入排序
- Android实现网络多线程断点续传下载原理
- USB 3G dongle E303在android4.4上的移植支持
- KVC 与 KVO
- 【CSS学习】CSS 边框
- java基本算法题及答案
- Java线程中run和start方法的区别