Winsock_sample.zip

  • PUDN用户
    了解作者
  • C++
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2010-04-16 02:28
    上传日期
簡單的winsock程式之實現,可充分了解winsock是如何運作,再加以擴展!
Winsock_sample.zip
  • Server.c
    2.3KB
  • Client.c
    2KB
内容介绍
#include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <string.h> #include "winsock.h" #define WSVERS MAKEWORD(2, 0) void errexit(const char *format, ...) { va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); printf("\n"); WSACleanup(); exit(1); } int main(int argc, char * argv[]) { /* connection setting */ char *host = "localhost"; char *port = "9999"; /* socket data*/ WSADATA wsadata; struct sockaddr_in sin; /* an Internet endpoint address */ struct sockaddr_in fsin; /* the address of a client */ struct protoent *ppe; int type; SOCKET s, ssock; int qlen = 5; /* maximum connection queue length */ int alen; /* length of client's address */ /* Other Declare */ char buf[1024]; int cc; /* start WinSock*/ if(WSAStartup(WSVERS, &wsadata) != 0) errexit("WSAStartup faild"); memset(&sin, 0, sizeof(sin)); sin.sin_family = PF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons( (u_short) atoi(port) ) ; /* 設定 TCP/UDP */ if((ppe = getprotobyname("tcp")) == 0) errexit("can't get \"%s\" prototype entry", "tcp"); type = SOCK_STREAM; /* tcp */ /* Allocate a socket */ s = socket(PF_INET, type, ppe->p_proto); if (s == INVALID_SOCKET) errexit("can't create socket: %d\n", GetLastError()); else puts("Created Server socket."); /* Bind the socket */ if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) == SOCKET_ERROR) errexit("can't bind to %s %d\n", port, GetLastError()); else puts("bind."); /* listen */ if( type == SOCK_STREAM && listen(s, qlen) == SOCKET_ERROR) errexit("can't listen on %s port: %d\n", port, GetLastError()); else puts("listen."); while(1) { alen = sizeof(fsin); ssock = accept(s, (struct sockaddr *) &fsin, &alen); if(ssock == INVALID_SOCKET) errexit("accept: err number %d", GetLastError()); puts("client connected."); puts("Please send msg, 'q' leave:"); do { gets(buf); if(send(ssock, buf, strlen(buf), 0) == SOCKET_ERROR) { fprintf(stderr, "send err:%d", GetLastError()); break; } }while(buf[0] != 'q'); closesocket(ssock); break; } /* close a scoet*/ closesocket(s); /* End WinSock*/ WSACleanup(); return 0; }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...