多线程server代码实现(多线程的代码)
admin 发布:2022-12-19 16:03 106
今天给各位分享多线程server代码实现的知识,其中也会对多线程的代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、C#中如何使用多线程,在一个button_click事件中的while循环下使用多线程,怎么实现?代码如下。
- 2、java 多线程socketserver 实现smtp
- 3、用C++ socket怎么实现client与server的多线程通信
C#中如何使用多线程,在一个button_click事件中的while循环下使用多线程,怎么实现?代码如下。
private void startserver() 改为 private void startserver(object ThreadInfo),
在其中加入 Socket sta_service = (Socket )ThreadInfo;
把
while (isExit==false)
{
Socket service = server.Accept();
sta_service = service;
Thread newthread = new Thread(new ThreadStart(startserver));
newthread.Start();
}
改为
while (isExit==false)
{
Socket service = server.Accept();
Thread newthread = new Thread(new ThreadStart(startserver));
newthread.Start(service);
}
java 多线程socketserver 实现smtp
SMTP 建立在TCP之上 可以用传统的方式,建立socket 然后 accept 到一个请求后 新建一个线程处理 rec 和send 数据即可
这种方式吞吐量不够,可使用Java nio 中的select的模型,两个线程就ok
用C++ socket怎么实现client与server的多线程通信
一种思想就是在服务器端使用多线程函数,接收到一个客户端请求就开辟一个新的线程来实现客户端与服务器端之间的通信。
具体做法见下面这个例子(在vs2015下编译通过):
//服务器端:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#includeiostream
#includeWinSock2.h
#includeprocess.h
#pragma comment(lib, "ws2_32.lib")
using namespace std;
enum{PORT = 8621};
void thread_fun(void *p)
{
//通信线程函数
char s[1024];
SOCKET socka = (SOCKET)p;
char *str = "hello client!";
sockaddr_in sa = { AF_INET };
int n_Len = sizeof(sa);
send(socka, str, strlen(str), 0);
//获取客户端ip地址
getpeername(socka, (sockaddr*)sa, n_Len);
cout inet_ntoa(sa.sin_addr) "-" htons(sa.sin_port) "登录:" endl;
while (true) //循环接收数据
{
int i = recv(socka, s, sizeof(s), 0);
if (i = 0)
{
cout GetLastError() endl;
cout inet_ntoa(sa.sin_addr) "-" htons(sa.sin_port) "退出:" endl;
break;
}
s[i] = 0;
cout inet_ntoa(sa.sin_addr) "-" htons(sa.sin_port) "说:" s endl;
}
}
int main()
{
WSADATA wd;
WSAStartup(0x0202, wd); //初始化加载ws2_32.lib
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); //初始化套接字
if (sock == INVALID_SOCKET)
{
cout GetLastError() endl;
return -1;
}
sockaddr_in sa = { AF_INET,htons(PORT) };
if (bind(sock, (sockaddr*)sa, sizeof(sa)) 0) //绑定端口
{
cout GetLastError() endl;
return -1;
}
listen(sock, 5); //监听
while (true)
{
SOCKET socka = accept(sock,0,NULL); //通信套接字
_beginthread(thread_fun, 0, (void*)socka); //创建线程
}
return 0;
}
//客户端:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#includeiostream
#includeWinSock2.h
#pragma comment(lib, "ws2_32.lib")
using namespace std;
enum { PORT = 8621 };
int main()
{
WSADATA wd;
WSAStartup(0x0202, wd); //初始化加载ws2_32.lib
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); //初始化套接字
if (sock == INVALID_SOCKET)
{
cout GetLastError() endl;
return -1;
}
sockaddr_in sa = { AF_INET,htons(PORT) }; //指明地址信息
sa.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int n_Len = sizeof(sa);
if(SOCKET_ERROR ==connect(sock, (sockaddr*)sa, n_Len)) //连接
{
cout GetLastError() endl;
return -1;
}
char s[1024];
int n = recv(sock, s, sizeof(s), 0); //接收数据
if (n 0)
{
s[n] = 0;
cout s endl;
}
while (true)
{
cout "请输入要发送的内容:";
cin s;
send(sock, s, strlen(s), 0);
}
return 0;
}
关于多线程server代码实现和多线程的代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
- 05-06在线html执行代码(html怎么运行)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
- 05-06代码源软件库(程序代码库)[20240506更新]
- 05-06点击弹出密码代码(点击弹出密码代码错误)[20240506更新]
- 05-06滚动导航代码(导航页面代码)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接