LinuxÏÂÃæSocket±à³ÌµÄÎÊÌâ
http://hqlong.com/2009/06/800.html/comment-page-1 ¿´µ½ÁËÕâÆª½Ì³Ì£¬¿ÉÊÇÓÐһЩ²»Àí½âµÄ£¬×¢ÊͳöÀ´ÁË£¬ÔÚwhileÑ»·ÀïÃæ£¬Ï£Íû´ïÈËÄܽâÊÍÒ»ÏÂ
C/C++ code:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define SERVPORT 3333
#define BACKLOG 10
#define MAXSIZE 1024
int main() {
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
//´´½¨Ì×½Ó×Ö
if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) {
perror("socket create failed!");
exit(1);
}
//°ó¶¨¶Ë¿ÚµØÖ·
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)) == -1) {
perror("bind error!");
exit(1);
}
//¼àÌý¶Ë¿Ú
if (listen(sockfd, BACKLOG) == -1) {
perror("listen error");
exit(1);
}
while (1) {
int sin_size = sizeof(struct sockaddr_in);
if ((client_fd = accept(sockfd, (struct sockaddr*)&remote_addr,&sin_size)) == -1) {
Ïà¹ØÎÊ´ð£º
ʹÓÃPHPµÄexecº¯Êýµ÷ÓÃlinuxµÄshellÃüÁÈçdateÈ¥ÐÞ¸Äʱ¼ä»òshutdownȥʵÏֹػú/ÖØÆô£¬µ«ÊÇ·µ»ØÖµ¶¼ÊÇʧ°ÜµÄ¡£¾¹ý¶à´ÎÊÔÑ飬È϶¨ÊÇûÓÐȨÏÞµÄÎÊÌâ¡£
ËùÒÔ£¬Ð¡µÜÔÚ´ËÇë½Ì¸÷룬ÈçºÎ²ÅÄÜÉèÖÃȨÏÞ£¬µ÷ÓÃlinux shellà ......
ÎÒҪд¸ö·þÎñ¶Ë¡£ ÒªÇóͬʱ֧³Öwindows ºÍ linux Á½¸ö ϵͳ¡£ Ò²¾ÍÊÇҪдһ¸ö dllºÍÒ»¸öso Îļþ¡£ÓÉÓÚÎÒÒ»Ö±¶¼ÊÇÔÚwindsÏÂд³ÌÐò¡£linuxµÄ»¹²»»á¡£ Ïò´ó¼Ò×Éѯ ͬʱ Ö§³Ö dllºÍso Ó¦¸ÃÔõôд¡£
Óô¿c/c ......
linux Ͻø³Ì´´½¨¡£
ʹÓÃvfork() º¯Êý´´½¨ÁË×Ó½ø³Ìºó£¬×Ó½ø³ÌÏÈÐÐÖ´ÐУ¬ÔÚ×Ó½ø³Ìµ÷ÓÃexit»òexec֮ǰ¸¸½ø³Ì´¦ÓÚʲô״̬£¿£¿
²»ÖªµÀ£»Ê×ÏÈδ±ØÊÇ×Ó½ø³ÌÏÈÖ´ÐУ»µÚ2¸¸½ø³ÌÒ²´¦ÓÚÖ´ÐÐ״̬£»ÖÁÓÚ¸¸½ø³Ìµ½µ××öʲô£»¿´´ ......
ÎÒÓÃRPM±¨°²×°ÁËÒ»¸öÀϰ汾µÄJRE£¬ºóÀ´Ïëװа汾µÄ£¬
²»¹ý£¬ÎÒ°Ñ/usr/javaĿ¼ֱ½Ó¸øÉ¾ÁË£¬
ºóÔÙ°²×°µÄʱºò£¬×ÜÊÇÌáʾ°æ±¾³åÍ»£¬
¶øÇÒÎÒÓÃRPM°üÐ¶ÔØÊ±Ò²ÕÒ²»µ½ÎļþÁË¡£
ÎÒ¶ÔLINUX²»ÊìϤ£¬Ï£Íû¸ßÊÖ°ïæ¡£
http: ......