TCP、套接字、单线程、控制台程序

本文详细介绍了如何在Windows环境下使用库函数进行Socket编程,包括如何在工程设置中添加链接库,以及客户端和服务端的基本操作流程。通过具体代码示例展示了如何实现TCP连接、数据收发等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要调用Windows库函数,请在工程设置中添加链接库

VC6.0中:工程->设置->连接->对象/库模块    ws2_32.lib kernel32.lib user32.lib gdi32.lib................

VS2010 2012中:属性->连接器->输入->附加依赖项->编辑,在里面添加ws2_32.lib就行了

客户端:

#include <Winsock2.h>
#include <stdio.h>
#include <cstring>
 void main()

 { 
	 WORD wVersionRequested;
   WSADATA wsaDate;
   int err;
   wVersionRequested = MAKEWORD(1,1);
   err = WSAStartup (wVersionRequested,&wsaDate);
   if(err !=0)
   {
	 return; 
   }
    if (LOBYTE(wsaDate.wVersion) !=1 || HIBYTE (wsaDate.wVersion) !=1)
	{ 
	  WSACleanup();
	  return;
	}

	SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr .S_un.S_addr=inet_addr("222.25.171.190");
	addrSrv.sin_family=AF_INET;
	addrSrv.sin_port=htons(6000);

	connect (sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
	char recvBuf[500];
	while(true)
	{
		memset(recvBuf,0,sizeof(recvBuf));
		recv(sockClient,recvBuf,500,0);
 		printf("%s\n",recvBuf);
		char sendBuf[500];
		memset(sendBuf,0,sizeof(sendBuf));
		gets(sendBuf);
		char myWords[1000]="222.25.177.71˵:";
		strcat(myWords,sendBuf);
		send(sockClient,myWords,strlen(myWords)+1,0);
	}
	closesocket(sockClient);
	WSACleanup();	
 }


服务器端:

#include<Winsock2.h>
#include<stdio.h>
void main()
{
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested=MAKEWORD(1,1);
	
	err=WSAStartup(wVersionRequested,&wsaData);
	if(err!=0)
	{
		return;
	}

	if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
	{
		WSACleanup();
		return;
	}

	SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
	addrSrv.sin_family=AF_INET;
	addrSrv.sin_port=htons(6000);

	bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
	listen(sockSrv,5);

	SOCKADDR_IN addrClient;
	int len=sizeof(SOCKADDR);

	while(1)
	{
		SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
		char sendBuf[100];
		sprintf(sendBuf,"Welcome %s to http://wwwss",inet_ntoa(addrClient.sin_addr));
		send(sockConn,sendBuf,strlen(sendBuf)+1,0);
		char recvBuf[100];
		recv(sockConn,recvBuf,100,0);
		printf("%s\n",recvBuf);
		closesocket(sockConn);
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值