linuxsocket服务器
server端:
listen();
accept();
启动新线程处理accpet的socket,收发数据,然后继续accept,这样可以处理并发请求。
client端:
connect() server,
收发数据
㈡ linux下怎么利用socket测试服务器是否可达
配置一台电脑或者服务器,把网卡配置成IP自动获取的 再把这台机器与服务器用网线连起来,如果这台机器能获取到服务器分的IP 说明dhcp服务正常工作了
㈢ Linux Socket编程求助啊,一个服务器和多个客户端通信问题求助
如果客户端并发连接数不是很大,比如50个以下,可以用如下模型:
建立一个监听主线程,循环监听端口。
当有客户端连接时,建立客户端通讯线程,并保留客户端socket到链表中。
当客户端断开连接时,从socket链表中删除该socket。
㈣ 在linux下用c语言写个socket,一个服务器,十个客户端。
服务器用多线程,,,-lpthread,,,其他的不说了linux和windows都可以的自己修改下,,不用C++就用API
㈤ linux下,socket服务器和客户端TCP方式建立了连接,如何使它们之间相互发送消息
1.可能是在获取客户端的ip和端口时,处理出现问题,导致无法正确发送到客户端。
2.客户端是否使用固定的端口来接收服务器信息,或服务器是否正确发送到客户端的相应的端口。
3.通过上面分析,最大可能是在处理端口出现问题,请重新检查。
4.实在不行,最好使用抛出异常方法来捕获错误消息,或是通过一步一步调试分析数据发送过程。
㈥ linux下socket编程,怎样把文件和文件属性一起发送到服务器端
socket可以发送任意类型的数据。socket本身不限制你要发送什么,而是由你自己来定要发什么的。只要你接收端能识别发来的是什么即可。
协议的三个基本要素,语法、语义、同步。比如你用于表示文件属性的结构体或者其他什么数据长度固定是20字节,那么你就在发送文件内容之前把这20字节发送过去,接收端在接收内容之前,固定会先接收20字节并作为文件属性,随后接收到的内容才作为数据存入文件,这样就可以做到了。
关键点就在于自己要定好语法、语义、同步这些,发送端和接收端配合好动作。
㈦ Linux下的socket是怎么回事,如何利用其实现局域网内的数据处理
//服务端server.c
#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
6000
/*服务器监听端口号
*/
#define
BACKLOG
10
/*
最大同时连接请求数
*/
#define
MAXDATASIZE
100
main()
{
char
buf[MAXDATASIZE];
int
sockfd,client_fd;
/*sock_fd:监听socket;client_fd:数据传输socket
*/
struct
sockaddr_in
my_addr;
/*
本机地址信息
*/
struct
sockaddr_in
remote_addr;
/*
客户端地址信息
*/
if
((sockfd
=
socket(AF_INET,
SOCK_STREAM,
0))
==
-1)
{
perror("socket创建出错!");
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出错!");
exit(1);
}
if
(listen(sockfd,
BACKLOG)
==
-1)
{
perror("listen出错!");
exit(1);
}
while(1)
{
sin_size
=
sizeof(struct
sockaddr_in);
if
((client_fd
=
accept(sockfd,
(struct
sockaddr
*)&remote_addr,
&sin_size))
==
-1)
{
perror("accept出错");
continue;
}
printf("received
a
connection
from
%s\n",
inet_ntoa(remote_addr.sin_addr));
if
(!fork())
{
/*
子进程代码段
*/
if
((recvbytes=recv(client_fd,
buf,
MAXDATASIZE,
0))
==-1)
{
perror("recv出错!");
close(client_fd);
exit(0);
}
buf[recvbytes]
=
'\0';
printf("from
client
Received:
%s",buf);
if
(send(client_fd,
"thanks!\n",
8,
0)
==
-1)
perror("send出错!");
close(client_fd);
exit(0);
}
close(client_fd);
}
}
//客户端client.c
#include<stdio.h>
#include
<stdlib.h>
#include
<errno.h>
#include
<string.h>
#include
<netdb.h>
#include
<sys/types.h>
#include
<netinet/in.h>
#include
<sys/socket.h>
#define
SERVPORT
6000
#define
MAXDATASIZE
100
main(int
argc,
char
*argv[])
{
int
sockfd,
recvbytes;
char
buf[MAXDATASIZE];
struct
hostent
*host;
struct
sockaddr_in
serv_addr;
if
(argc
<
2)
{
fprintf(stderr,"Please
enter
the
server's
hostname!\n");
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
herror("gethostbyname出错!");
exit(1);
}
if
((sockfd
=
socket(AF_INET,
SOCK_STREAM,
0))
==
-1)
{
perror("socket创建出错!");
exit(1);
}
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr
=
*((struct
in_addr
*)host->h_addr);
bzero(&(serv_addr.sin_zero),8);
if
(connect(sockfd,
(struct
sockaddr
*)&serv_addr,
sizeof(struct
sockaddr))
==
-1)
{
perror("connect出错!");
exit(1);
}
if
(send(sockfd,
"hello!\n",
7,
0)
==
-1)
{
perror("send出错!");
exit(1);
}
if
((recvbytes=recv(sockfd,
buf,
MAXDATASIZE,
0))
==-1)
{
perror("recv出错!");
exit(1);
}
buf[recvbytes]
=
'\0';
printf("Received:
%s",buf);
close(sockfd);
}
㈧ Node.js和Linux Socket做游戏服务器的话各有什么优劣
node不支持多线程(用户可操作的多线程),但多线程不是游戏服务器架构中必须的。现在的游戏服务器主要采用跨机器的分布式架构。一个进程作为一个子服务端,是可以的。
node的net是在socket基础之上的,已经实现好的一套非阻塞异步IO。如果使用socket,还需要自己去做一套IO框架。当然,完全可以做得比net高效,因为socket更底层更灵活。
但高效不是一切,开发时所花的精力也是需要考虑到的。
并发性肯定是node拥有的特性。除非说你觉得node的并发性不够,你有时间也有能力去用C/C++实现一个比node更好的IO框架。
㈨ linux之socket , URL 访问http服务器
给提供一个指导步骤:
1、修改socket服务端口为80/443;
2、申请一个域名并配置IP和域名的映射,如是本地的话,请把服务器主机名和IP地址在开发机器上做一个映射即可,如是linux机器,请在/etc/hosts文件添加如下信息,
ipmapping_hostname
㈩ 求助:linux服务器间Socket异常问题:Connection reset
这个表明连接断开。不是异常,不会导致问题。除非有大量或者短时间内很多Connectionreset。那就要进一步分析了