当前位置:首页 > 代码 > 正文

多线程server代码实现(多线程的代码)

admin 发布:2022-12-19 16:03 106


今天给各位分享多线程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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/11829.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载