TCP/IP 小试

// TCP_Server.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include <winsock.h>
#include <stdlib.h>


WORD RPort = 7777; // 远程端口 RemotePort
char RIP[16] = "127.0.0.1"; // 远程 IP地址 RemoteIPAddr
WORD LPort = 9888; // 本地端口 LocalPort
char LIP[16] = "127.0.0.1"; // 本地IP地址 LocalAddr


SOCKET S; // 套接口 SOCKET
struct sockaddr_in rAddr; // 远程参数, remoteAddr
struct sockaddr_in lAddr; // 本地参数, localAddr


WSADATA WD; // WinSock DLL信息
int r; // result;


//-----------------------------------------------------------------------
void ShowInfo (char *info)
{
puts(info);
exit(1);
}
//-----------------------------------------------------------------------
void SetSockAddr (struct sockaddr_in *A, WORD Port, char *IP)
{
A->sin_family = AF_INET; // TCP/IP 协议
A->sin_port = htons(Port); // 端口 
A->sin_addr.s_addr = inet_addr(IP); // IP网址
}
//------------------------------------------------------------------------






int _tmain(int argc, char* argv[])
{
WORD v; // wVersionrequested
//---------------- Startup Win Socket --------------------------------
v = 0x0101;
r = WSAStartup(v, (LPWSADATA) &WD);
if(r != 0)
{
ShowInfo("Start_Error");
}
//---------------- Create Win Socket ---------------------------------
S = socket (PF_INET, SOCK_DGRAM, 0);
if(S == -1)
{
ShowInfo("Socket_Create_Error");
}
int l = sizeof(rAddr);
char Msg[80];
puts("Type exit then Quit Program!");
SetSockAddr(&lAddr, LPort, LIP);
r = bind(S, (struct sockaddr far *)&lAddr, sizeof(lAddr));
if(r == -1)
{
ShowInfo("bind_Error");
}

SetSockAddr(&rAddr, RPort, RIP);


do{




//--------------------- Recieve Mess ---------------------------------

r = recv (S, Msg, 80, 0);
//r = recvfrom(S, Msg, 80, 0,(struct sockaddr far *) &rAddr, &l);
if(r ==-1)
{
ShowInfo("Recieve Error");
}
Msg[r] = 0;
puts(Msg);
puts("Recieve Ok!");
//--------------------- Send Message --------------------------------
puts("Send:");
gets_s(Msg);
if(!strcmp(Msg,"exit"))
{
break;
}


r = sendto(S, Msg, strlen(Msg), 0, (struct sockaddr far *)&rAddr, l);
if(r == -1)
{
ShowInfo(" Send Error");
}
puts("Send ok! waiting Recieve...");


}while(1);
closesocket(S);
WSACleanup();


return 0;
}

// TCP_Client.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include <winsock.h>
#include <stdlib.h>


WORD RPort = 9888; // 远程端口 RemotePort
char RIP[16] = "127.0.0.1"; // 远程 IP地址 RemoteIPAddr
WORD LPort = 7777; // 本地端口 LocalPort
char LIP[16] = "127.0.0.1"; // 本地IP地址 LocalAddr


SOCKET S; // 套接口 SOCKET
struct sockaddr_in rAddr; // 远程参数, remoteAddr
struct sockaddr_in lAddr; // 本地参数, localAddr


WSADATA WD; // WinSock DLL信息
int r; // result;


//-----------------------------------------------------------------------
void ShowInfo (char *info)
{
puts(info);
exit(1);
}
//-----------------------------------------------------------------------
void SetSockAddr (struct sockaddr_in *A, WORD Port, char *IP)
{
A->sin_family = AF_INET; // TCP/IP 协议
A->sin_port = htons(Port); // 端口 
A->sin_addr.s_addr = inet_addr(IP); // IP网址
}
//------------------------------------------------------------------------






int _tmain(int argc, char* argv[])
{
WORD v; // wVersionrequested
//---------------- Startup Win Socket --------------------------------
v = 0x0101;
r = WSAStartup(v, (LPWSADATA) &WD);
if(r != 0)
{
ShowInfo("Start_Error");
}
//---------------- Create Win Socket ---------------------------------
S = socket (PF_INET, SOCK_DGRAM, 0);
if(S == -1)
{
ShowInfo("Socket_Create_Error");
}
int l = sizeof(rAddr);
char Msg[80];
puts("Type exit then Quit Program!");
SetSockAddr(&lAddr, LPort, LIP);
r = bind(S, (struct sockaddr far *)&lAddr, sizeof(lAddr));
if(r == -1)
{
ShowInfo("bind_Error");
}
SetSockAddr(&rAddr, RPort, RIP);



do{
//--------------------- Send Message --------------------------------
puts("Send:");
gets_s(Msg);
if(!strcmp(Msg,"exit"))
{
break;
}


r = sendto(S, Msg, strlen(Msg), 0, (struct sockaddr far *)&rAddr, l);
if(r == -1)
{
ShowInfo(" Send Error");
}


//--------------------- Recieve Mess ---------------------------------
puts("Send ok! waiting Recieve...");
r = recv (S, Msg, 80, 0);
//
//r = recvfrom(S, Msg, 80, 0,(struct sockaddr far *) &rAddr, &l);
if(r ==-1)
{
ShowInfo("Recieve Error");
}
Msg[r] = 0;
puts(Msg);
puts("Recieve Ok!");




}while(1);
closesocket(S);
WSACleanup();


return 0;
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值