网络连接(一)

来源:互联网 发布:网络预算表 编辑:程序博客网 时间:2024/06/06 02:37

说明:实现简单的TCP网络连接。

—————————————-服务器—————————————-
文件名称:Server.c
运行方式:命令行

#include <stdio.h>#include <stdlib.h>#include <winsock2.h>int main(int argc,char *argv[]){    WSADATA wsaData;    SOCKET ServSock,ClntSock;    SOCKADDR_IN ServAddr,ClntAddr;    int szClntAddr;    char message[]="hello world!";    if(argc!=2)    {        printf("Please input <port>:%s \n",argv[0]);        exit(1);    }    if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)        printf("WSAStartup() error!\n");    ServSock=socket(AF_INET,SOCK_STREAM,0);    if(ServSock==INVALID_SOCKET)        printf("socket() error!\n");    memset(&ServAddr,0,sizeof(ServAddr));    ServAddr.sin_family=AF_INET;    ServAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);    ServAddr.sin_port=htons(atoi(argv[1]));    if(bind(ServSock,(SOCKADDR *)&ServAddr,sizeof(ServAddr))==SOCKET_ERROR)        printf("bind() error!\n");    if(listen(ServSock,5)==SOCKET_ERROR)        printf("listen() error!\n");    szClntAddr=sizeof(ClntAddr);    ClntSock=accept(ServSock,(SOCKADDR *)&ClntAddr,&szClntAddr);    if(ClntSock==INVALID_SOCKET)        printf("accept() error!\n");    send(ClntSock,message,sizeof(message),0);    closesocket(ClntSock);    closesocket(ServSock);    WSACleanup();    return 0;}

—————————————-客户端—————————————-
文件名称:Client.c
运行方式:命令行

#include <stdio.h>#include <stdlib.h>#include <winsock2.h>int main(int argc,char *argv[]){    WSADATA wsaData;    SOCKET ClntSock;    SOCKADDR_IN ServAddr;    char message[30];    int n;    if(argc!=3)    {        printf("Please input <IP> <Port> :%s\n",argv[0]);        exit(1);    }    if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)        printf("WSAStartup() error!\n");    /*        关于AF_INET与PF_INET说明        1.在windows中的winsock2.h文件中:                #define PF_INET AF_INET                即:AF_INET与PF_INET是等价的,都表示IPv4。        2.Unix/Linux系统中,在不同的版本中这两者有微小差别。对于BSD是AF,对于POSIX是PF。但是也可以混合使用,只是不符合相关规范。    */    ClntSock=socket(AF_INET,SOCK_STREAM,0);    if(ClntSock==INVALID_SOCKET)        printf("socket() error!\n");    memset(&ServAddr,0,sizeof(ServAddr));    ServAddr.sin_family=AF_INET;    ServAddr.sin_addr.S_un.S_addr=inet_addr(argv[1]);    ServAddr.sin_port=htons(atoi(argv[2]));    if(connect(ClntSock,(SOCKADDR *)&ServAddr,sizeof(ServAddr))==SOCKET_ERROR)        printf("connect() error!\n");    n=recv(ClntSock,message,sizeof(message),0);    if(n==-1)        printf("Read the Server Data faild!\n");    else        printf("Message from Server: %s\n",message);    closesocket(ClntSock);    WSACleanup();    return 0;}
0 0