社区
网络编程
帖子详情
求一个客户端和服务器端可以相互通信的代码。。。
Cquice
2012-06-12 03:41:15
没有什么要求,就是客户端可以向服务器端发送接收数据
服务器端可以向客户端发送接收数据。
本人初次接触Socket编程,求各位大神指教
...全文
111
8
打赏
收藏
求一个客户端和服务器端可以相互通信的代码。。。
没有什么要求,就是客户端可以向服务器端发送接收数据 服务器端可以向客户端发送接收数据。 本人初次接触Socket编程,求各位大神指教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
闭着眼刷牙
2012-06-12
打赏
举报
回复
我来混分的 也给你发一份自己的
Cquice
2012-06-12
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
这个问题,本身没有一个确定的回答,如何双方发送消息取决你的协议设计,
方法有很多,不外乎是,多线程:一个线程接收数据,一个线程发送数据
WIN32的完成端口结构,注册事件
[/Quote]
//Server.cpp
#include <iostream>
#include <Windows.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#define PORT 4000
#define IP_ADDRESS "127.0.0.1"
DWORD WINAPI ClientThread(LPVOID lpParameter)
{
SOCKET CientSocket = (SOCKET)lpParameter;
int Ret = 0;
char RecvBuffer[MAX_PATH];
while ( true )
{
memset(RecvBuffer, 0x00, sizeof(RecvBuffer));
Ret = recv(CientSocket, RecvBuffer, MAX_PATH, 0);
if ( Ret == 0 || Ret == SOCKET_ERROR )
{
cout<<"客户端退出!"<<endl;
break;
}
cout<<"接收到客户信息为:"<<RecvBuffer<<endl;
}
return 0;
}
int main(int argc, char* argv[])
{
WSADATA Ws;
SOCKET ServerSocket, CientSocket;
struct sockaddr_in LocalAddr, ClientAddr;
int Ret = 0;
int AddrLen = 0;
HANDLE hThread = NULL;
//Init Windows Socket
if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 )//打开winsock
{
cout<<"Init Windows Socket Failed::"<<GetLastError()<<endl;
return -1;
}
//Create Socket
ServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//建立套接字
if ( ServerSocket == INVALID_SOCKET )
{
cout<<"Create Socket Failed::"<<GetLastError()<<endl;
return -1;
}
//初始化LocalAddr
LocalAddr.sin_family = AF_INET;
LocalAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);
// LocalAddr.sin_addr.s_addr = INADDR_ANY;
// INADDR_ANY 表示下面的函数bind函数把刚才创建的socket绑定到当前的电脑的IP地址上。
LocalAddr.sin_port = htons(PORT);//主机序转化为网络序
memset(LocalAddr.sin_zero, 0x00, 8);
//Bind Socket 服务器绑定端口
Ret = bind(ServerSocket, (struct sockaddr*)&LocalAddr, sizeof(LocalAddr));
if ( Ret != 0 )
{
cout<<"Bind Socket Failed::"<<GetLastError()<<endl;
return -1;
}
Ret = listen(ServerSocket, 10);
if ( Ret != 0 )
{
cout<<"listen Socket Failed::"<<GetLastError()<<endl;
return -1;
}
cout<<"服务端已经启动"<<endl;
while ( true )
{
AddrLen = sizeof(ClientAddr);
CientSocket = accept(ServerSocket, (struct sockaddr*)&ClientAddr, &AddrLen);
if ( CientSocket == INVALID_SOCKET )
{
cout<<"Accept Failed::"<<GetLastError()<<endl;
break;
}
cout<<"客户端连接::"<<inet_ntoa(ClientAddr.sin_addr)<<" 端口号:"<<ClientAddr.sin_port<<endl;
hThread = CreateThread(NULL, 0, ClientThread, (LPVOID)CientSocket, 0, NULL);
if ( hThread == NULL )
{
cout<<"Create Thread Failed!"<<endl;
break;
}
CloseHandle(hThread);
}
closesocket(ServerSocket);
closesocket(CientSocket);
WSACleanup();
return 0;
}
例如这个用tcp协议的程序 怎么把他改成双线程 一个线程监听接收 一个线程去发送信息呢?
Cquice
2012-06-12
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
留个邮箱 ,我给你发一份。
[/Quote]
383863692@qq.com
谢谢了
Cquice
2012-06-12
打赏
举报
回复
明白了!谢谢了!
hyqok
2012-06-12
打赏
举报
回复
留个邮箱 ,我给你发一份。
toufazhile
2012-06-12
打赏
举报
回复
这个问题,本身没有一个确定的回答,如何双方发送消息取决你的协议设计,
方法有很多,不外乎是,多线程:一个线程接收数据,一个线程发送数据
WIN32的完成端口结构,注册事件
Cquice
2012-06-12
打赏
举报
回复
//server.cpp
while ( true )
{
memset(RecvBuffer, 0x00, sizeof(RecvBuffer));
Ret = recv(CientSocket, RecvBuffer, MAX_PATH, 0);
if ( Ret == 0 || Ret == SOCKET_ERROR )
{
cout<<"客户端退出!"<<endl;
break;
}
cout<<"接收到客户信息为:"<<RecvBuffer<<endl;
}
//client.cpp
while ( true )
{
cin.getline(SendBuffer, sizeof(SendBuffer));
Ret = send(CientSocket, SendBuffer, (int)strlen(SendBuffer), 0);
if ( Ret == SOCKET_ERROR )
{
cout<<"Send Info Error::"<<GetLastError()<<endl;
break;
}
}
上面的代码只能是客户端发送信息 接收端接收信息.怎么在上面完善一些,使得双方可以互相发送信息
toufazhile
2012-06-12
打赏
举报
回复
使用socket通信就可以实现啦,只是不知道你要什么东西,大概是服务端 :
WIN32:
SOCKET s = socket();
bind(s)
listen(s)
SOCKET ss = accept(s);
recv(ss);
send(ss);
客户端:
WIN32:
SOCKET s = socket(s);
connect(s);
send(s);
recv(s);
Java实现TCP
客户端
和
服务器端
相互
通信
服务器端
和
客户端
写完后加上client.shutdownOutput();
服务器端
和
客户端
写完后加上client.shutdownOutput();
服务器端
和
客户端
读完后...解决TCP
客户端
和
服务器端
通信
读不到数据的问题。想让
服务器端
回信息,结果翻车了。
客户端
到
服务器端
的
通信
过程及原理
现在结和我所学,我想总结一下
客户端
到
服务器端
的
通信
过程。只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题。 我们首先要了解
一个
概念性的词汇:Socket socket的...
Java的TCP/UDP网络编程+多线程实现
服务器端
与
客户端
间的
通信
客户端
与
服务器端
的
通信
就可以理解为
服务器端
的
一个
端口<------>
客户端
的
一个
端口 (”<--->“代表是全双工
通信
) 为什么要用多线程? 因为要想
客户端
和
服务器端
互相发数据且互不干扰(以在控制台发...
Java通过socket实现
客户端
和
服务器端
的
通信
编写客户
服务器端
程序,使用Socket技术实现
通信
,双方约定
通信
端口为6789。
服务器端
功能:当收到
客户端
信息后,首先判断是否是“BYE”,若是,则立即向对方发送“BYE”,然后关闭监听,结束程序。若不是,则在屏幕上...
客户端
到
服务器端
的
通信
过程及 原理图很好
现在结和我所学,我想总结一下
客户端
到
服务器端
的
通信
过程。只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题。 我们首先要了解
一个
概念性的词汇:Socket socket的...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章