您的位置:首页 > 运维架构 > Linux

socket编程 实现windows和linux服务器之间的通信

2013-04-04 17:23 489 查看
今天学了一下socket编程的内容,看了很多资料和代码,然后自己做了一下实验,一台windows客户端和linux主机之间进行通信,这两者的socket编程部分稍微有一些差别,不过大体上还是一样的,windows要做的准备工作要多一些。

linux服务器端代码:监听端口为6666

View Code

#include <winsock2.h>
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#pragma comment(lib,"ws2_32.lib")//注意链接库文件
#define MAXLINE 4096
int main(int argc,char * argv[])
{
int n;
SOCKET sockfd;
char recvline[MAXLINE],sendline[4096];
SOCKADDR_IN servaddr;
WORD wVersionRequested; //typedef unsigned short WORD; 2字节
WSADATA wsaData;
int err;
wsaData.wVersion =MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData); //return 0 if successful
if(err!=0)
{
printf("Call WSAStart ERROR!");
exit(1);
}
if(argc != 2)
{
printf("usage: ./client <ipaddress>\n");
exit(0);
}
if((sockfd = socket(AF_INET,SOCK_STREAM,0))< 0)
{
printf("create socket error: %s(errno: %d)\n",strerror(errno),errno);
exit(0);
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
servaddr.sin_addr.S_un.S_addr=inet_addr(argv[1]);

if( connect(sockfd, (struct sockaddr*)&servaddr, sizeof(SOCKADDR_IN))< 0)
{
printf("connect error: %s(errno: %d)\n",strerror(errno),errno);
exit(0);
}
printf("send msg to server: \n");
sprintf(sendline,"hello,it's the client msg");
if(send(sockfd, sendline, strlen(sendline), 0) < 0)
{
printf("send msg error: %s(errno: %d)\n",strerror(errno),errno);
exit(0);
}
closesocket(sockfd);
exit(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: