回顾下windows下网络方面的东西 首先写了下C语言的socket
--查看本机IP:ipconfig/all
---C语言实现
---visual studio 2012
Server:
#include
#include
#pragma comment(lib,"ws2_32.lib")
int main(void)
{
//初始化wsa
WORD sockVision = MAKEWORD(2,2);
WSADATA wsadata;
//其他变量
SOCKET slisten;
SOCKET sClient;
struct sockaddr_in remoteAddr;
struct sockaddr_in sin;
int ret = -1;
int nAddrlen = sizeof(remoteAddr);
char revdata[255];
char senddata[255];
if( WSAStartup(sockVision,&wsadata) != 0 )
{
printf("WSA初始化失败\n");
return 0;
}
//创建套接字
slisten = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(slisten == INVALID_SOCKET)
{
printf("socket监听者创建失败\n");
return 0;
}
//绑定IP和端口
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("绑定IP和端口\n");
return 0;
}
//监听
if(listen(slisten,5) == SOCKET_ERROR)
{
printf("监听失败\n");
return 0;
}
//循环接收数据
while(1)
{
printf("等待连接.........\n");
sClient = accept(slisten,(SOCKADDR *)&remoteAddr,&nAddrlen);
if(sClient == INVALID_SOCKET)
{
printf("接受客户端失败,正在重试.........\n");
continue;
}
printf("接受客户端成功:%s\n",inet_ntoa(remoteAddr.sin_addr));
//接收数据
while(1)
{
ret = recv(sClient,revdata,255,0);
if(ret > 0)
{
revdata[ret] = 0x00;
printf("\n");
printf("客户:");
printf(revdata);
printf("\n");
}
if(strcmp(revdata,"bye") == 0)
break;
//发送数据
printf("我:");
scanf("%s",senddata);
send(sClient,senddata,strlen(senddata),0);
}
closesocket(sClient);
}
closesocket(sClient);
WSACleanup();
return 0;
}
Client:
#include
#include
#pragma comment(lib,"ws2_32.lib")
int main(void)
{
WORD sockVision = MAKEWORD(2,2);
WSADATA wsadata;
SOCKET sclient ;
struct sockaddr_in serAddr;
char senddata[255];
char revdata[255];
int ret = -1;
if(WSAStartup(sockVision,&wsadata) != 0)
{
printf("WSA初始化失败\n");
return 0;
}
sclient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sclient == INVALID_SOCKET)
{
printf("socket客户端创建失败\n");
return 0;
}
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.224");
if( connect(sclient,(SOCKADDR *)&serAddr,sizeof(serAddr)) == SOCKET_ERROR )
{
printf("socket客户端连接失败\n");
return 0;
}
while(1)
{
printf("我:");
scanf("%s",senddata);
send(sclient,senddata,strlen(senddata),0);
if(strcmp(senddata,"bye") == 0)
break;
ret = recv(sclient,revdata,255,0);
if(ret > 0)
{
revdata[ret] = 0x00;
printf("\n");
printf("服务器:");
printf(revdata);
printf("\n");
}
}
closesocket(sclient);
WSACleanup();
system("pause");
return 0;
}