VC+Socket 网络通讯示例
2012-12-30 22:47
148 查看
VC+Socket 网络通讯示例
博客分类: Socket
SocketVC++Windows
Cpp代码
VC+Socket 网络通讯示例 收藏
服务器端示例代码
#include <stdio.h>
#include <winsock.h>
#include <windows.h>
#define SERVER_SOCKET_ERROR 1
#define SOCKET_OK 0
#pragma comment(lib, "wsock32.lib")
void socketError(char*);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShow)
{
WORD sockVersion;
WSADATA wsaData;
int rVal;
sockVersion = MAKEWORD(1,1);
//start dll
WSAStartup(sockVersion, &wsaData);
//create socket
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s == INVALID_SOCKET)
{
socketError("Failed socket()");
WSACleanup();
return SERVER_SOCKET_ERROR;
}
//fill in sockaddr_in struct
SOCKADDR_IN sin;
sin.sin_family = PF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.s_addr = INADDR_ANY;
//bind the socket
rVal = bind(s, (LPSOCKADDR)&sin, sizeof(sin));
if(rVal == SOCKET_ERROR)
{
socketError("Failed bind()");
WSACleanup();
return SERVER_SOCKET_ERROR;
}
//get socket to listen
rVal = listen(s, 2);
if(rVal == SOCKET_ERROR)
{
socketError("Failed listen()");
WSACleanup();
return SERVER_SOCKET_ERROR;
}
//wait for a client
SOCKET client;
client = accept(s, NULL, NULL);
if(client == INVALID_SOCKET)
{
socketError("Failed accept()");
WSACleanup();
return SERVER_SOCKET_ERROR;
}
//close process
closesocket(client);
closesocket(s);
WSACleanup();
return SOCKET_OK;
};
void socketError(char* str)
{
MessageBox(NULL, str, "SOCKET ERROR", MB_OK);
};
客户端示例代码
#include <windows.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")
#define CS_ERROR 1
#define CS_OK 0
void sError(char*);
int WINAPI WinMain(HINSTANCE hHinst, HINSTANCE hPrevHinst, LPSTR lpCmdLine,
int nShow)
{
WORD version;
WSADATA wsaData;
int rVal=0;
version = MAKEWORD(1,1);
WSAStartup(version,(LPWSADATA)&wsaData);
LPHOSTENT hostEntry;
//store information about the server
hostEntry = gethostbyname("hibbert");
if(!hostEntry)
{
sError("Failed gethostbyname()");
//WSACleanup();
return CS_ERROR;
}
//create the socket
SOCKET theSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(theSocket == SOCKET_ERROR)
{
sError("Failed socket()");
return CS_ERROR;
}
//Fill in the sockaddr_in struct
SOCKADDR_IN serverInfo;
serverInfo.sin_family = PF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
serverInfo.sin_port = htons(8888);
rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
if(rVal==SOCKET_ERROR)
{
sError("Failed connect()");
return CS_ERROR;
}
closesocket(theSocket);
WSACleanup();
MessageBox(NULL, "Connection was made", "SOCKET", MB_OK);
return CS_OK;
}
void sError(char *str)
{
MessageBox(NULL, str, "SOCKET ERROR", MB_OK);
WSACleanup();
}
相关文章推荐
- PHP基于socket实现的简单客户端和服务端通讯功能示例
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- 基于tcp/ip协议的Socket网络通讯 --> 简单的数据传送和库构造
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯【转】from http://www.linuxidc.com/Linux/2012-06/63173.htm
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计1
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
- Java ServerSocket Socket 网络通讯的那些事
- 网络socket编程之TCP示例程序
- VC Socket网络通信
- linux下非阻塞模式网络通讯模型示例分享
- VC SOCKET 编程小示例
- ioctl在socket中的一些用法及示例 ,控制网络文件
- 在CB中用socket api来写网络通讯程序
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(二)
- vc 网络编程(socket)
- Java SSL Socket通讯示例
- C#线程池多线程Socket通讯 服务器端和客户端示例
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架