用VC++ API模式编写一个基于IP/TCP协议的服务器端与客户端通信的程序
用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




