socket网络编程

 首先我先学下基于tcp/ip协议的socket程序。。。

   要实现通信,首先必须先建立一台服务器,步骤如下:

  1.用WSASTARTUP启动socket库

  2.建立一个socket

  3.用bind函数把本地地址和端口绑定起来

  4.用listen函数使socket能够监听来自客户的请求

  5.用accept函数来接受客户发来的请求,同时可以得到客户的ip和端口信息,方便后面的通信

  6.接下来就可以用send和recv函数来和客户通信。。。。

 

  接下来是客户机程序的编写,这个相对来说比较简单。。。

   1.也是建立一个socket

   2.不用进行绑定和监听操作,直接和服务器进行连接,用函数connect实现

  3.接下来就可以用send和recv和服务器之间实现通信了

 

  以前就是一个简单的网络编程,很容易实现吧。。。下面是这个程序的源代码。。。

   服务器程序:

#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  fuwuqi=socket(AF_INET,SOCK_STREAM,0);


 sockaddr_in  a;
 a.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 a.sin_family=AF_INET;
 a.sin_port=htons(6000);
 bind(fuwuqi,(sockaddr*)&a,sizeof(sockaddr));

 listen(fuwuqi,2);

    sockaddr_in  b;
 int  n=sizeof(sockaddr);
 while(1)
 {
        SOCKET kefu=accept(fuwuqi,(sockaddr*)&b,&n);
        send(kefu,"hello",strlen("hello")+1,0);
  char jieshou[100];
  recv(kefu,jieshou,100,0);
  printf("%s\n",jieshou);
  closesocket(kefu);
 }
}


 

 

客户机:

#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 kefu=socket(AF_INET,SOCK_STREAM,0);

 sockaddr_in  a;
 a.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 a.sin_family=AF_INET;
 a.sin_port=htons(6000);
 connect(kefu,(sockaddr*)&a,sizeof(sockaddr));


 char  jieshou[100];
 recv(kefu,jieshou,100,0);
 printf("%s",jieshou);

 send(kefu,"this is shizhan",strlen("this is shizhan")+1,0);


 closesocket(kefu);
 WSACleanup();
}


 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值