日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux java socket编程_linux下java程序与C语言程序通过SOCKET通信的简单例子

發布時間:2025/4/16 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux java socket编程_linux下java程序与C语言程序通过SOCKET通信的简单例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include int sockfd,newfd;

void *read_socket();

int main()

{

int ret;

pthread_t read_tid,write_tid;

struct sockaddr_in server_addr;

server_addr.sin_family=AF_INET;/*設置域為IPV4*/

server_addr.sin_addr.s_addr=INADDR_ANY;/*綁定到 INADDR_ANY 地址*/

server_addr.sin_port=htons(5678);/*通信端口號為5678,注意這里必須要用htons函數處理一下,不能直接寫5678,否則可能會連不上*/

sockfd=socket(AF_INET,SOCK_STREAM,0);

if (sockfd<0)

{

printf("調用socket函數建立socket描述符出錯!\n");

exit(1);

}

printf("調用socket函數建立socket描述符成功!\n");

ret=bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(server_addr));

perror("server");

if (ret<0)

{

printf("調用bind函數綁定套接字與地址出錯!\n");

exit(2);

}

printf("調用bind函數綁定套接字與地址成功!\n");

ret=listen(sockfd,4);

if (ret<0)

{

printf("調用listen函數出錯,無法宣告服務器已經可以接受連接!\n");

exit(3);

}

printf("調用listen函數成功,宣告服務器已經可以接受連接請求!\n");

newfd=accept(sockfd,NULL,NULL);/*newfd連接到調用connect的客戶端*/

if (newfd<0)

{

printf("調用accept函數出錯,無法接受連接請求,建立連接失敗!\n");

exit(4);

}

printf("調用accept函數成功,服務器與客戶端建立連接成功!\n");

/** 服務器端建立一個線程,負責從socket讀取數據,當然此處并不一定非要建立一個新線程,直接在原線程中寫也可以 **/

pthread_create(&read_tid,NULL,read_socket,NULL);

/********************* 令原線程睡眠 ************************/

while(1)

{

sleep(10000);

}

}

/****************** 從socket讀取數據 ********************/

void *read_socket()

{

int recv_num,recv_num_total=0;

char recv_buf[50];

while (1)

{

memset(recv_buf,0,sizeof(recv_buf));/*清空一下recv_buf緩存區*/

recv_num=recv(newfd,recv_buf,26,0);

if (recv_num<0)

printf("服務器端:調用recv接收失敗!\n");

else if(recv_num>0)

{

recv_num_total+=recv_num;

printf("服務器端:調用recv接收成功!本次接收到%d個字節,內容為:\"%s\"。共收到%d個字節的數據。\n",recv_num,recv_buf,recv_num_total);

sync();

}

else/*收到數據為0,表明服務器與客戶端的連接已經中斷*/

{

printf("服務器端:與客戶端的連接已中斷,當前共收到%d個字節的數據。服務器將再次等待客戶端的連接。\n",recv_num_total);

newfd=accept(sockfd,NULL,NULL);/*當客戶端退出后,再次開始接收客戶端的連接*/

}

sleep(1);

}

}

總結

以上是生活随笔為你收集整理的linux java socket编程_linux下java程序与C语言程序通过SOCKET通信的简单例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。