UDP

#include <WinSock2.h>
#include <windows.h>
#include <iostream>
#include <string>
#include <process.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;

typedef struct _Cifo
{
	SOCKET C;
	SOCKADDR_IN c_addr;
	int len;
}_Cifo;
BOOL g_bRect = 0;

void TheradRecv(void *p)
{
	char buf[1025] = { 0 };
	string tem_buf;
	_Cifo *C = (_Cifo*)p;
	int bRect = 0;
	while (1)
	{
		bRect = recvfrom(C->C, buf, 1024, 0, (sockaddr*)(&(C->c_addr)), &(C->len));
		if (bRect == SOCKET_ERROR)
		{
			break;
		}
		 if (bRect == 0)
		{
			break;
		}
		else if (bRect > 1024)
		{
			tem_buf = buf;
			memset(buf, 0, 1025);
			while ((bRect = recvfrom(C->C, buf, 1024, 0, (sockaddr*)(&(C->c_addr)), &(C->len))) <= 1024)
			{
				tem_buf += buf;
				memset(buf, 0, 1025);
			}
			cout << endl << tem_buf;
			continue;
		}
		cout << endl << buf;
		memset(buf, 0, 1025);
	}
	//closesocket(C->C);
}
void main()
{
	WSADATA wsa;
	
	SOCKET S;
	SOCKADDR_IN S_addr;
	int bRect;
	bRect = WSAStartup(MAKEWORD(2, 2), &wsa);
	if (bRect)
	{
		return;
	}
	S = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if (!S)
	{
		WSACleanup();
		return;
	}
	S_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	S_addr.sin_family = AF_INET;
	S_addr.sin_port = (6000);
//	bRect = bind(S, (SOCKADDR*)&S_addr, sizeof(SOCKADDR_IN));
	
	_Cifo C_info;

	memset(&C_info, 0, sizeof(C_info));
	C_info.C = S;
	C_info.c_addr = S_addr;
	C_info.len = sizeof(C_info.c_addr);
	

	sendto(S, buf, strlen(buf), 0, (sockaddr*)(&C_info.c_addr), (C_info.len));
	_beginthread(TheradRecv, 0, (void*)&C_info);
	string str;
	while (1)
	{
		cin >> str;
	
			bRect = sendto(S, str.c_str(), str.length(), 0, (sockaddr*)(&C_info.c_addr), (C_info.len));
			if (bRect == SOCKET_ERROR)
			{
				break;
			}
			else if (bRect == 0)
				break;
		
	}

	closesocket(S);
	WSACleanup();

	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值