文件名: server.c
linux 下socket网络编程简例 - 服务端程序
服务器端口设为 0x8888 (端口和地址可根据实际情况更改,或者使用参数传入)
服务器地址设为 192.168.1.104
作者:kikilizhm#163.com (将#换为@)
*/
#include <stdlib.h>
#include <sys/types.h>
#include <stdio.h>
#include <sys/socket.h>
#include <linux/in.h>
#include <string.h>
int main()
{
int sfp,nfp/* 定义两个描述符 */
struct sockaddr_in s_add,c_add
int sin_size
unsigned short portnum=0x8888/* 服务端使用端口 */
printf("Hello,welcome to my server !\r\n")
sfp = socket(AF_INET, SOCK_STREAM, 0)
if(-1 == sfp)
{
printf("socket fail ! \r\n")
return -1
}
printf("socket ok !\r\n")
/* 填充服务器端口地址信息,以便下面使用此地址和端口监听 */
bzero(&s_add,sizeof(struct sockaddr_in))
s_add.sin_family=AF_INET
s_add.sin_addr.s_addr=htonl(INADDR_ANY)/* 这里地址使用全0,即所有 */
s_add.sin_port=htons(portnum)
/* 使用bind进行绑定端口 */
if(-1 == bind(sfp,(struct sockaddr *)(&s_add), sizeof(struct sockaddr)))
{
printf("bind fail !\r\n")
return -1
}
printf("bind ok !\r\n")
/* 开始监听相应的端口 */
if(-1 == listen(sfp,5))
{
printf("listen fail !\r\n")
return -1
}
printf("listen ok\r\n")
char gc
while(1)
{
sin_size = sizeof(struct sockaddr_in)
/* accept服务端使用函数,调用时即进入阻塞状态,等待用户进行连接,在没有客户端进行连接时,程序停止在此处,
不会看到后面的打印,当有客户端进行连接时,程序马上执行一次,然后再次循环到此处继续等待。
此处accept的第二个参数用于获取客户端的端口和地址信息。
*/
nfp = accept(sfp, (struct sockaddr *)(&c_add), &sin_size)
if(-1 == nfp)
{
printf("accept fail !\r\n")
return -1
}
printf("accept ok!\r\nServer start get connect from %#x : %#x\r\n",ntohl(c_add.sin_addr.s_addr),ntohs(c_add.sin_port))
/* 这里使用write向客户端发送信息,也可以尝试使用其他函数实现 */
if(-1 == write(nfp,"hello,welcome to my server \r\n",32))
{
printf("write fail!\r\n")
return -1
}
while((gc = getchar()) != EOF) /* 按ctrl + z 键结束,或者给定一个特殊字符,如'#',即 hile((gc = getchar()) != '#') */
{
write(nfp,gc,1)
}
printf("write ok!\r\n")
close(nfp)
}
close(sfp)
return 0
}
Linux系统下面出现:Segmentfault(段错误)提示信息,有时候是由于你自己在编写程序的过程中,有数组越界、或者是内存泄漏(例如:引用了空指针)等原因造成的。具体是哪一种情况,就需要自己仔细查看自己编写的源程序,到底哪里有程序漏洞。
Linux是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络 *** 作系统。
Linux *** 作系统诞生于1991年10月5日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的 *** 作系统。
在图形计算中,一个桌面环境(Desktopenvironment,有时称为桌面管理器)为计算机提供一个图形用户界面(GUI)。但严格来说窗口管理器和桌面环境是有区别的。桌面环境就是桌面图形环境,它的主要目标是为Linux/Unix *** 作系统提供一个更加完备的界面以及大量各类整合工具和使用程序,其基本易用性吸引着大量的新用户。桌面环境名称来自桌面比拟,对应于早期的文字命令行界面(CLI)。一个典型的桌面环境提供图标,视窗,工具栏,文件夹,壁纸以及像拖放这样的能力。整体而言,桌面环境在设计和功能上的特性,赋予了它与众不同的外观和感觉。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)