1.mystery引入

 

   1)UDP也可以编写出C/S程序 ,另外TCP也可以编写点对点通信。
   2)网络的本质就是资源共享,当前流行的P2P应用正好暗合了这种精神。
   3)当前流行的Web服务,其标准协议是HTTP,很多从事Web应用程序开发的开发者,从事的就是这种应用的网络编程,所采用的开 发模式是浏览器/服务器结构,也称为B/S结构 。
   4)B/S结构是C/S结构的一个变种,是指开发者不需要开发独立的客户端软件,浏览器就是此时的客户端,开发者只需要在服务器端编写并部署脚本,资源请求者就可以通过URL进行访问了。
   5)Socket提供一种原始套接字机制,能够让开发者直接操纵IP层。
   6)利用Socket编程还可以编写出广播和组播应用程序。
   7)广播是指向当前局域网所有的在线主机发送数据,ARP协议就是利用广播机制。
   8)组播相对广播,也可了理解为广播的一个子集,类似于QQ中的群。


2.源

 

   服务端:
//TCPServer.c
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#define SERVER_PORT 5555
main()
{
    int serverSocket;
    struct sockaddr_in server_addr;
    struct sockaddr_in clientAddr;
    int addr_len = sizeof(clientAddr);
    int client;
    char buffer[1024];
    int iDataNum ;
    if((serverSocket = socket(AF_INET,SOCK_STREAM,0)) < 0)
    {
        perror("socket");
        exit(1);
    }
    bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family =AF_INET;
    server_addr.sin_port = htons(SERVER_PORT);
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr)) < 0)
    {
        perror("connect");
        exit(1);
    }
    if(listen(serverSocket,5)<0)
    {
        perror("listen");
        exit(1);
    }
    while(1)
    {
        client = accept(serverSocket,(struct sockaddr *)&clientAddr,(socklen_t*)&addr_len);
        if(client < 0)
        {
            perror("accept");
            continue;
        }
        iDataNum = recv(client,buffer,1024,0);
        if(iDataNum < 0)
        {
            perror("Recv");
            continue;
        }
        printf("\nRecv client data.......\n");
        printf("IP is %s\n",inet_ntoa(clientAddr.sin_addr));
        printf("Port is %d\n",htons(clientAddr.sin_port));
        printf("Recv Data is %s\n",buffer);
        send(client,buffer,sizeof(buffer),0);
    }
}
View Code

 


相关文章: