您的位置:首页 > 理论基础 > 计算机网络

【socket编程】 一个简单的基于TCP连接的客户端、服务端用例

2018-02-07 18:56 971 查看
//客户端::

#include "stdafx.h"
#include <stdio.h>
#include "WinSock2.h"
#pragma comment(lib,"ws2_32.lib")

SOCKET tcp_socket;
SOCKADDR_IN tcpAddr;
const int BufLen = 1024;
char SendBuf[BufLen];

int main(int argc,char* argv[])
{
WSADATA wsd;
long int Addr;
int Port;
if (argc != 3)
{
printf("Usage:%s [<IP> <Port>]\n",argv[0]);
return 0;
}
Addr = inet_addr(argv[1]);
Port = atoi(argv[2]);
WSAStartup(MAKEWORD(2, 2), &wsd);
tcp_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
printf("Running in client mode(TCP)...\n");
tcpAddr.sin_family = AF_INET;
tcpAddr.sin_port = htons(Port);
tcpAddr.sin_addr.s_addr = Addr;
 
connect(tcp_socket, (LPSOCKADDR)&tcpAddr, sizeof(tcpAddr));

while (1)
{
ZeroMemory(SendBuf, BufLen);
fgets(SendBuf, BufLen, stdin);

//gets_s(SendBuf,BufLen);
//strcpy(SendBuf+strlen(SendBuf),"\n");

send(tcp_socket, SendBuf, BufLen, 0);
}
closesocket(tcp_socket);
WSACleanup();   //释放套接字资源;
return 1;
}

//服务端

#include "stdafx.h"

#include <stdio.h>
#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib")

SOCKET tcp_service_socket = INVALID_SOCKET;
SOCKADDR_IN tcpServiceAddr;
const int BufLen = 1024;
char RecvBuf[BufLen];
SOCKET tcp_client_socket = INVALID_SOCKET;
SOCKADDR_IN tcpClientAddr;

int main()
{
WSADATA wsd;
int Port=8000;
WSAStartup(MAKEWORD(2, 2), &wsd);
tcp_service_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
tcpServiceAddr.sin_family = AF_INET;
tcpServiceAddr.sin_port = htons(Port);
printf("Running in service mode(TCP)...\n");
bind(tcp_service_socket, (LPSOCKADDR)&tcpServiceAddr, sizeof(tcpServiceAddr));
listen(tcp_service_socket, 1);

int size = sizeof(tcpClientAddr);
tcp_client_socket = accept(tcp_service_socket, (sockaddr FAR*)&tcpClientAddr, &size);
while (1)
{
if (tcp_client_socket == INVALID_SOCKET)
{
Sleep(1000);
continue;
}
recv(tcp_client_socket, RecvBuf,BufLen, 0);
printf("Received:%s\n", RecvBuf);
}
closesocket(tcp_client_socket);
closesocket(tcp_service_socket);
WSACleanup();  //释放套接字资源
return 1;
}

原文链接:https://www.cnblogs.com/caixu/archive/2011/01/08/1930914.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐