socket多線程編程c
㈠ c++ socket編程中的多線程處理問題
你說的有點沒看明白,這樣的代碼結構應該可以吧。不過不會state一變化就停止a操作,一次a操作的流程要執行完,在下次進入循環的時候才會轉去執行其他操作。
while() //死循環
{
if(state == 2)
{
//執行其他操作
usleep();//如果沒有其他操作,可以睡眠一段時間 比如10ms。
contunue;
}
// a操作
}
㈡ VC++ socket多線程編程問題
WSAStartup()和WSACleanup()在主線程調用一次就行,一般在main函數調用。
不調用WSACleanup()在進程結束後系統會幫你回收資源。
建議還是調用WSACleanup(),寫出程序看起來邏輯嚴謹。
㈢ 關於java socket 多線程編程
業務需要這么復雜嗎???如果你要實現伺服器和客戶端都可以向對方發送消息,而不等待對方應答,只需要把InputStream和OutputStream分別放在兩個不同線程里就行了,即是說把接收流與發送流分別用一個線程監聽處理。如果要實現不分客戶端伺服器的話,用UDP通信即可
㈣ linux C socket編程多線程問題
在線程函數內定義同樣類型的局部變數,創建線程時將client_socket_fd
值傳遞給該局部變數,以後在該線程中只使用線程函數中的局部變數就可以了。
例如:
pthread_create(&iThreadId, &attr, ThreadProc, client_socket_fd);
線程函數:(其中使用fd)
void *ThreadProc(void *lpVoid)
{
SOCKET *fd = (SOCKET)lpVoid;
... ...
}
㈤ 有windows上C語言開發多線程socket通信的例子么
http://www.jb51.net/article/44156.htm
這里的OK不?
㈥ c#多線程socket編程
多建幾個線程接受請求
㈦ c++ 多線程socket編程可以多個線程同時accept數據嗎
監聽連接都用一個線程就行了,多線程監聽是不明智的,監聽到之後把創建連接的套接字發送給其他線程通信就行。。。。
㈧ 剛介入linux c的socket編程沒多久,想要寫一個socket客戶端,實現多線程處理發送和接收,哪位大俠幫幫忙啊
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 8888
void *yourfunction(void *connect_fd)
{
int connfd = *((int *)connect_fd);
。。。。
} //你沒說具體的應用,所以只能寫這么多了。在這裡面直接對connfd調用read和write函數就可以和客戶端收發數據了。
//補充:是啊 返回給客戶端什麼信息啊?
int main(void)
{
int sockfd, n, connfd;
pthread_t tid;
struct sockaddr_in servaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
{
perror("socket:");
exit(1);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
n = bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
if (n == -1)
{
perror("bind:");
exit(1);
}
n = listen(sockfd, 20);
if (n == -1)
{
perror("listen:");
exit(1);
}
while (1)
{
connfd = accept(sockfd, (struct sockaddr *)&servaddr, NULL);
pthread_create(&tid, NULL, yourfunction, (void *)&connfd);
}
return 0;
}
㈨ socket編程在多線程中需要注意哪些
你別多個線程在同一個socket上調用accept就成。
多個線程在同一個socket上調用accept我真不知道它會有什麼樣的行為
常見的一種做法是在一個socket上調用accept,接受連接以後丟給某個線程去完成接下來的事情
㈩ 關於Socket多線程編程的recv函數問題
建議設個flag,在服務端進這個while後,如果沒處理(文件沒發送)完畢前,不在進入,或多開幾個thread設置不同埠等待接收客戶端的要求。