windows下的socket的面向连接简单编程

来源:互联网 发布:网络主播传媒公司 编辑:程序博客网 时间:2024/05/16 17:20

环境:windows10 + VC++6.0

1. 加载 ws2_32.lib   

 project ->settings -> link  -> object/library   modules下输入ws2_32.lib

    或者   代码中加入 #pragma comment(lib, "WS2_32")

2.  流程 


服务器


初始化(套接字,本机信息,客户端信息)->建立套接字->绑定端口->监听端口->接收客户端->发送消息->关闭


客户端


初始化->建立套接字->连接服务器->接受消息->关闭


3.代码


注意要修改IP地址


服务器

#include <stdio.h>
#include <string.h>
#include <windows.h>




//服务器端


#define SERVPORT   3333   //定义端口


#define BACKLOG     5   //定义连接数


void main ()
{
//初始化
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);

 
//开始
int sockfd,client_fd;


sockaddr_in MyAddr ,ClientAddr;


if( (sockfd=socket(AF_INET,SOCK_STREAM,0)) ==-1)
{
printf("创建套接字时候出错!\n");
exit(1);
}
printf("创建套接字成功!\n");


memset(&MyAddr,0,sizeof(struct sockaddr_in));
MyAddr.sin_family=AF_INET;
MyAddr.sin_port=htons(SERVPORT);//端口
MyAddr.sin_addr.s_addr=INADDR_ANY;//IP



if(bind(sockfd,(struct sockaddr*)&MyAddr,sizeof(MyAddr))==-1)
{
printf("绑定时候出错!\n");
exit(1);
}
printf("绑定成功!\n");


if(listen(sockfd,BACKLOG)==-1)
{
printf("监听时候出错!\n");
exit(1);
}
printf("进行监听等待客户端连接:\n");

int sizeClient=sizeof(ClientAddr);
if((client_fd=accept(sockfd,(struct sockaddr*)&ClientAddr,&sizeClient))==-1)
{
printf("接受客户端时候出错!\n");
exit(1);
}

printf("输入向客户端输出的文字:");
char  put[100];
scanf("%s",put);
int len=sizeof(put);

if(send(client_fd,put,len,0)==-1)
{
printf("输出的时候出错!\n");
exit(1);
}


closesocket(client_fd);
closesocket(sockfd);
}


客户端

#include <stdio.h>
#include <windows.h>
#include <string.h>


#define SERVPORT   3333


void main()
{
//初始化
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);


struct sockaddr_in serv_addr;
int sockfd;
char rec[100];


memset(&serv_addr,0,sizeof(struct sockaddr_in));
serv_addr.sin_family =AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr.s_addr=inet_addr("192.168.1.1");//此时输入服务器的IP地址  192.168.1.1仅作范例



if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("创建套接字时候出错!\n");
exit(1);
}


if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr))==-1)
{
printf("连接服务器时候出错!\n");
exit(1);
}


if(recv(sockfd,rec,100,0)==-1)
{
printf("接收数据时候出错!\n");
exit(1);
}


printf("recv:%s\n",rec);


closesocket(sockfd);


}


0 0
原创粉丝点击