zoukankan      html  css  js  c++  java
  • windows下socket

    源代码奉上,流程图。。。这个太简单了,你自己看看。。。。。。。
    
    //TCP
    //服务器端程序
    #include< stdio.h >
    #include< stdlib.h >
    #include< windows.h >
    #include< winsock.h >
    #include< string.h > 
    
    #pragma comment( lib, "ws2_32.lib" )
    
    #define PORT 2046
    #define BACKLOG 10
    #define TRUE 1
    
    void main( void )
    {
    int iServerSock;
    int iClientSock;
    
    char *buf = "hello, world!\n";
    
    struct sockaddr_in ServerAddr;
    struct sockaddr_in ClientAddr;
    
    int sin_size;
    
    WSADATA WSAData;
    
    if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )//初始化
    {
    printf( "initializationing error!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    if( ( iServerSock = socket( AF_INET, SOCK_STREAM, 0 ) ) == INVALID_SOCKET )
    {
    printf( "创建套接字失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    ServerAddr.sin_family = AF_INET;
    ServerAddr.sin_port = htons( PORT );//监视的端口号
    ServerAddr.sin_addr.s_addr = INADDR_ANY;//本地IP
    memset( & ( ServerAddr.sin_zero ), 0, sizeof( ServerAddr.sin_zero ) );
    
    
    if( bind( iServerSock, ( struct sockaddr * )&ServerAddr, sizeof( struct sockaddr ) ) == -1 )
    {
    printf( "bind调用失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    if( listen( iServerSock, BACKLOG ) == -1 )
    {
    printf( "listen调用失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    while( TRUE )
    {
    sin_size = sizeof( struct sockaddr_in );
    iClientSock = accept( iServerSock, ( struct sockaddr * )&ClientAddr, &sin_size );
    
    if( iClientSock == -1 )
    {
    printf( "accept调用失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    printf( "服务器连接到%s\n", inet_ntoa( ClientAddr.sin_addr ) );
    if( send( iClientSock, buf, strlen( buf ), 0 ) == -1 )
    {
    printf( "send调用失败!" );
    closesocket( iClientSock );
    WSACleanup( );
    exit( 0 );
    }
    }
    }
    
    
    /////客户端程序
    #include< stdio.h >
    #include< stdlib.h >
    #include< windows.h >
    #include< winsock.h >
    #include< string.h > 
    
    #pragma comment( lib, "ws2_32.lib" )
    
    #define PORT 2046
    #define BACKLOG 10
    #define TRUE 1
    #define MAXDATASIZE 100
    
    
    void main( void )
    {
    
    int iClientSock;
    char buf[ MAXDATASIZE ];
    struct sockaddr_in ServerAddr;
    int numbytes;
    // struct hostent *he;
    WSADATA WSAData;
    
    // int sin_size;
    
    /* if( ( he = gethostbyname( "liuys" ) ) == NULL )
    {
    printf( "gethostbyname调用失败!" );
    WSACleanup( );
    exit( 0 );
    }
    */
    
    
    if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )//初始化
    {
    printf( "initializationing error!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    if( ( iClientSock = socket( AF_INET, SOCK_STREAM, 0 ) ) == INVALID_SOCKET )
    {
    printf( "创建套接字失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    ServerAddr.sin_family = AF_INET;
    ServerAddr.sin_port = htons( PORT );
    // ServerAddr.sin_addr = *( ( struct in_addr * )he->h_addr );
    ServerAddr.sin_addr.s_addr = inet_addr( "192.168.2.194" );//记得换IP
    memset( &( ServerAddr.sin_zero ), 0, sizeof( ServerAddr.sin_zero ) );
    
    if( connect( iClientSock, ( struct sockaddr * ) & ServerAddr, sizeof( struct sockaddr ) ) == -1 )
    {
    printf( "connect失败!" );
    WSACleanup( );
    exit( 0 );
    }
    
    numbytes = recv( iClientSock, buf, MAXDATASIZE, 0 );
    
    if( numbytes == -1 )
    {
    printf( "recv失败!" );
    WSACleanup( );
    exit( 0 );
    }
    
    buf[ numbytes ] = '\0';
    
    printf( "Received: %s", buf );
    
    closesocket( iClientSock );
    WSACleanup( );
    }
    
    
    /////UDP
    //服务器
    #include< stdio.h >
    #include< string.h >
    #include< winsock.h >
    #include< windows.h >
    
    #pragma comment( lib, "ws2_32.lib" )
    
    #define PORT 2046
    #define BACKLOG 10
    #define TRUE 1
    #define MAXDATASIZE 1000
    
    void main( void )
    {
    int iServerSock;
    // int iClientSock;
    
    int addr_len;
    int numbytes;
    
    char buf[ MAXDATASIZE ];
    
    struct sockaddr_in ServerAddr;
    struct sockaddr_in ClientAddr;
    
    WSADATA WSAData; 
    if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )
    {
    printf( "initializationing error!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    iServerSock = socket( AF_INET, SOCK_DGRAM, 0 );
    if( iServerSock == INVALID_SOCKET )
    {
    printf( "创建套接字失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    
    ServerAddr.sin_family = AF_INET;
    ServerAddr.sin_port = htons( PORT );//监视的端口号
    ServerAddr.sin_addr.s_addr = INADDR_ANY;//本地IP
    memset( & ( ServerAddr.sin_zero ), 0, sizeof( ServerAddr.sin_zero ) );
    
    
    if( bind( iServerSock, ( struct sockaddr * )&ServerAddr, sizeof( struct sockaddr ) ) == -1 )
    {
    printf( "bind调用失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    
    addr_len = sizeof( struct sockaddr );
    numbytes = recvfrom( iServerSock, buf, MAXDATASIZE, 0, ( struct sockaddr * ) & ClientAddr, &addr_len );
    if( numbytes == -1 )
    {
    printf( "recvfrom调用失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    printf( "got packet from %s\n", inet_ntoa( ClientAddr.sin_addr ) );
    printf( "packet is %d bytes long\n", numbytes );
    buf[ numbytes ] = '\0';
    printf( "packet contains \"%s\"\n", buf );
    
    closesocket( iServerSock );
    WSACleanup( );
    
    
    }
    //客户端
    #include< stdio.h >
    #include< stdlib.h >
    #include< windows.h >
    #include< winsock.h >
    #include< string.h >
    
    #pragma comment( lib, "ws2_32.lib" )
    
    #define PORT 2046
    #define MAXDATASIZE 100
    
    
    void main( void )
    {
    
    int iClientSock;
    struct sockaddr_in ServerAddr;
    
    int numbytes;
    char buf[ MAXDATASIZE ] = { 0 };
    
    WSADATA WSAData;
    if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )
    {
    printf( "initializationing error!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    if( ( iClientSock = socket( AF_INET, SOCK_DGRAM, 0 ) ) == -1 )
    {
    printf( "创建套接字失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    ServerAddr.sin_family = AF_INET;
    ServerAddr.sin_port = htons( PORT );
    ServerAddr.sin_addr.s_addr = inet_addr( "192.168.2.194" );//记得换IP
    memset( &( ServerAddr.sin_zero ), 0, sizeof( ServerAddr.sin_zero ) );
    
    
    numbytes = sendto( iClientSock, buf, strlen( buf ), 0, ( struct sockaddr * ) & ServerAddr, sizeof( struct sockaddr ) );
    if( numbytes == -1 )
    {
    printf( "sendto调用失败!\n" );
    WSACleanup( );
    exit( 0 );
    }
    
    printf( "sent %d bytes to %s\n", numbytes, inet_ntoa( ServerAddr.sin_addr ) );
    
    closesocket( iClientSock );
    WSACleanup( );
    } 
  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/moonvan/p/2174482.html
Copyright © 2011-2022 走看看