CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

用VC++ API模式编写一个基于IP/TCP协议的服务器端与客户端通信的程序

楼主xue55032226(无语寒冰)2004-12-02 19:29:29 在 VC/MFC / 网络编程 提问

用VC++   API模式编写一个基于IP/TCP协议的服务器端与客户端通信的程序 问题点数:0、回复次数:7Top

1 楼HunterForPig(留着口水的猪)回复于 2004-12-02 20:58:02 得分 0

客户端:  
  #pragma   comment(lib,"ws2_32.lib")  
  #include<winsock2.h>  
  #include<stdio.h>  
  void   main()  
  {  
  WSADATA   wsaData;  
  WSAStartup(MAKEWORD(2,2),&wsaData);  
  SOCKET   connSock=socket(AF_INET,SOCK_STREAM,0);  
  SOCKADDR_IN   servAddr;  
  servAddr.sin_family=AF_INET;  
  servAddr.sin_port=htons(9878);  
  servAddr.sin_addr.s_addr=inet_addr("127.0.0.1");  
   
  connect(connSock,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN));  
  char   buf[11];  
  recv(connSock,buf,11,0);  
  printf("%s",buf);  
  }  
   
  服务器端:  
   
  #pragma   comment(lib,"ws2_32.lib")  
  #include<winsock2.h>  
  void   main()  
  {  
  WSADATA   wsaData;  
  WSAStartup(MAKEWORD(2,2),&wsaData);  
  SOCKET   servSock,cliSock;  
  SOCKADDR_IN   servAddr;  
  servAddr.sin_family=AF_INET;  
  servAddr.sin_port=htons(9878);  
  servAddr.sin_addr.s_addr=htonl(INADDR_ANY);  
  servSock=socket(AF_INET,SOCK_STREAM,0);  
  bind(servSock,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN));  
  listen(servSock,5);  
  while(true)  
  {  
  cliSock=accept(servSock,NULL,NULL);  
  send(cliSock,"hello   world",11,0);  
  }  
  }Top

2 楼wangjia184(我就是传说中的。。。。。。SB)回复于 2004-12-02 21:42:49 得分 0

#include<winsock.h>  
  #include"resource.h"  
  #include"Chat_RoomC.h"  
   
  int   APIENTRY   WinMain(HINSTANCE   hInstance,HINSTANCE   hPrevInstance,  
    LPSTR   lpCmdLine,int   nCmdShow)  
  {  
  DialogBox(hInstance,(LPCTSTR)"DIALOG1",NULL,(DLGPROC)Hostname_ipDlgPro);  
   
  return(TRUE);  
  }  
   
   
  BOOL   APIENTRY   Hostname_ipDlgPro(HWND   hDlg,UINT   message,  
  WPARAM   wParam,LPARAM   lParam)  
  {  
  switch(message)  
  {  
  case   WM_INITDIALOG:  
  WSA_return=WSAStartup(0x0002,&WSAData);  
  if(WSA_return!=0)  
  {  
  MessageBox(NULL,"初始化失败!","警告!",MB_OK);  
  WSACleanup();  
  }  
  if(client_hSocket!=0)  
  {  
  closesocket(client_hSocket);  
  client_hSocket=0;  
  }  
  if(client_hSocket==0)  
  {  
   
  if((client_hSocket=socket(AF_INET,SOCK_DGRAM,0))==SOCKET_ERROR)  
  MessageBox(NULL,"建立套接字失败!","警告!",MB_OK);  
   
  }  
  return   TRUE;  
   
  case   WM_COMMAND:  
   
  switch(LOWORD(wParam))  
  {  
  case   IDC_IPADDRESS:  
  if(HIWORD(wParam)==EN_CHANGE)  
  {  
  GetDlgItemText(hDlg,IDC_IPADDRESS,IP_String,20);  
   
  }  
  break;  
   
  case   IDC_INPUTTEXT:  
  if(HIWORD(wParam)==EN_CHANGE)  
  {  
  GetDlgItemText(hDlg,IDC_INPUTTEXT,Input_Text,256);  
   
  }  
  break;  
  case   IDC_SEND:  
  client_addr.sin_family=AF_INET;  
  client_addr.sin_addr.S_un.S_addr=inet_addr(IP_String);  
   
  client_uPort=GetDlgItemInt(hDlg,IDC_PORTTEXT,&bErr,TRUE);  
  client_addr.sin_port=htons((u_short)client_uPort);  
   
  sendto(client_hSocket,Input_Text,256,0,(LPSOCKADDR)&client_addr,sizeof(client_addr));  
  break;  
   
  case   IDCANCEL:  
  closesocket(client_hSocket);  
  WSACleanup();  
  EndDialog(hDlg,TRUE);  
  return(TRUE);  
   
  }  
  }  
  return(FALSE);  
  }Top

3 楼wangjia184(我就是传说中的。。。。。。SB)回复于 2004-12-02 21:43:05 得分 0

#include<winsock.h>  
  #include"resource.h"  
  #include"Chat_RoomS.h"  
   
  int   APIENTRY   WinMain(HINSTANCE   hInstance,HINSTANCE   hPrevInstance,  
    LPSTR   lpCmdLine,int   nCmdShow)  
  {  
   
  DialogBox(hInstance,(LPCTSTR)"DIALOG1",NULL,(DLGPROC)Hostname_ipDlgPro);  
   
   
  return(TRUE);  
  }  
   
   
  BOOL   APIENTRY   Hostname_ipDlgPro(HWND   hDlg,UINT   message,  
  WPARAM   wParam,LPARAM   lParam)  
  {  
   
  switch(message)  
  {  
  case   WM_INITDIALOG:  
  return(TRUE);  
   
  case   WM_COMMAND:  
  switch(LOWORD(wParam))  
  {  
  case   IDC_SETSERVER:  
  WSA_return=WSAStartup(0x0002,&WSAData);  
  if(WSA_return!=0)  
  {  
  MessageBox(NULL,"初始化失败!","警告!",MB_OK);  
  WSACleanup();  
  }  
  if(server_hSocket!=0)  
  {  
  closesocket(server_hSocket);  
  server_hSocket=0;  
  }  
  if(server_hSocket==0)  
  {  
   
  if((server_hSocket=socket(AF_INET,SOCK_DGRAM,0))==SOCKET_ERROR)  
  MessageBox(NULL,"建立套接字失败!","警告!",MB_OK);  
   
  }  
   
  server_addr.sin_family=AF_INET;  
  server_addr.sin_addr.S_un.S_addr=INADDR_ANY;  
   
  server_uPort=GetDlgItemInt(hDlg,IDC_PORTUINT,&server_bErr,TRUE);  
  server_addr.sin_port=htons((u_short)server_uPort);  
   
  if(bind(server_hSocket,(LPSOCKADDR)&server_addr,sizeof(server_addr))==SOCKET_ERROR)  
  MessageBox(NULL,"绑定端口失败!","警告",MB_OK);  
  return(TRUE);  
  case   IDC_RECEIVE:  
  recvfrom(server_hSocket,Output_Text,256,0,(LPSOCKADDR)&server_addr,&fromlen);  
  SetDlgItemText(hDlg,IDC_INPUTTEXT,Output_Text);  
  return(TRUE);  
   
  case   IDCANCEL:  
  closesocket(server_hSocket);  
  WSACleanup();  
  EndDialog(hDlg,TRUE);  
  return(TRUE);  
   
  }  
  }  
  return(FALSE);  
  }Top

4 楼nuaawenlin(飘人)回复于 2004-12-02 22:01:26 得分 0

呵呵,来晚了  
   
  楼主可以到www.vckbase.com上面有好多的基本例子Top

5 楼xue55032226(无语寒冰)回复于 2004-12-04 20:12:50 得分 0

谢谢了!高手们!Top

6 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-04 21:01:04 得分 0

先了解socket通信的服务端和客户端的过程Top

7 楼pclili(黑客天使)回复于 2004-12-04 21:35:36 得分 0

服务器端和客户端都有一个固定格式的,按照来做就行了。  
  比如server端:   socket(),   bind(),   listen(),   accept(),   send   or   recv  
  写个简单的网络通信程序还是比较简单的:)Top

相关问题

  • tcp/ip 的API问题
  • VC API
  • 请问VC下怎么控制一个tcp/ip的包头
  • 用VC怎么捕获TCP/IP中发送的包??
  • 在VC的tcp编程中,如果屏蔽某个ip地址
  • 希望和高手讨论!VC,Delphi,TCP/IP,Linux,数据库,软件工程...........
  • 请问哪里有关于TCP/IP编程的书籍下载(VC)
  • TCP/IP问题
  • TCP/IP协义
  • TCP/IP请教

关键词

  • vc++
  • 服务器
  • 通信
  • idc
  • 客户
  • socket
  • servaddr
  • hsocket
  • ipdlgpro
  • servsock

得分解答快速导航

  • 帖主:xue55032226

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo