社区
网络编程
帖子详情
求一个客户端和服务器端可以相互通信的代码。。。
Cquice
2012-06-12 03:41:15
没有什么要求,就是客户端可以向服务器端发送接收数据
服务器端可以向客户端发送接收数据。
本人初次接触Socket编程,求各位大神指教
...全文
158
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();
服务器端
和
客户端
读完后加上client.shutdownInput();
服务器端
和
客户端
读完后加上client.shutdownInput();运行,程序未停止运行且
服务器端
也没有输出,
客户端
发过来的消息。运行
服务器端
再运行
客户端
,在
客户端
中输入要发送的信息,回车。解决TCP
客户端
和
服务器端
通信
读不到数据的问题。想让
服务器端
回信息,结果翻车了。
一个
简单的QT tcp
客户端
和
服务器端
相互
通信
:简易TCP
通信
解决方案
一个
简单的QT tcp
客户端
和
服务器端
相互
通信
:简易TCP
通信
解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,网络
通信
是不可或缺的一部分。今天,我们为您推荐
一个
开源项目——
一个
简单的QT tcp
客户端
和
服务器端
相互
通信
。这个项目提供了
一个
基于QT框架的简易TCP
通信
示例,包括
一个
服务器端
和
一个
客户端
,两者通过TCP协议进行稳定的数据传输与
通信
...
服务器端
和
客户端
一对一
通信
程序
分别创建
服务器端
和
客户端
一对一
通信
程序,建立
通信
连接以后,
服务器端
和
客户端
之间可以
相互
发送和接收信息,当收发信息量超过窗体范围时,有滚动显示。
Java
一个
简单的
客户端
—
服务器端
通讯软件
两段
代码
分别创建了
一个
服务器
通信
端,
一个
客户
通信
端,用以
相互
通信
客户端
到
服务器端
的
通信
过程及 原理图很好
学习任何东西,我们只要搞清楚其原理,就会触类旁通。现在结和我所学,我想总结一下
客户端
到
服务器端
的
通信
过程。只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题。 我们首先要了解
一个
概念性的词汇:Socket socket的英文原义是“孔”或“插座”。作为进程
通信
机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是
一个
通信
链的句...
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章