close(Int socketfd);
#include <stdio.h>
#include <netinet/in.h>
close(Int socketfd);
#include <stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <errno.h>
#define PORT 8080 //定义服务器端口
#define LEN 2
int main(int argc,char *argv[])
{
unsigned int port=PORT;
int s_fd;
int c_fd;
struct sockaddr_in addr_in,addr_client;
struct in_addr addr_n;
char addr[16];
char buf[1024];
int len;
memset(&addr_in,0,sizeof(struct sockaddr_in));
memset(&addr_client,0,sizeof(struct sockaddr_in));
addr_in.sin_family=AF_INET;
addr_in.sin_port=htons(port);
addr_in.sin_addr.s_addr=INADDR_ANY; //接受来自任何client的请求。
s_fd=socket(AF_INET,SOCK_STREAM,0); //创建套接字
if(s_fd==-1){
printf("socket error:%s\n",strerror(s_fd));
exit(-1);
}
if(bind(s_fd,(struct sockaddr*)&addr_in,sizeof(struct sockaddr))==-1){
perror("bind");exit(-1);
} //服务器绑定端口和地址。在次允许任何client访问8080;
listen(s_fd,LEN); //设置监听,len表示client的等待队列的大小。即允许连接最大数。一般这两步骤只用于服务器。
while(1){
c_fd=accept(s_fd,(struct sockaddr*)&addr_client,&len); //等待接收来自客户端的请求,若没有会阻塞在这里。当客户端连接时,会将client的地址信息存放到addr_client中,并返回用于client对象的套接字c_fd;
if(c_fd==-1){
perror("accept");exit(-1);
}
if(inet_ntop(AF_INET,&addr_client.sin_addr,addr,16)==-1)
perror("inet_ntop");
printf("the client %s connect\n",addr);
if(read(c_fd,buf,1024)==-1)
perror("read");
else printf("receive from client:%s\n",buf);
if(write(c_fd,buf,1024)==-1)
perror("write");
}
close(s_fd);
return 0;
}
#include <stdio.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <string.h>
int main(int argc,char *argv[])
{
if(argc!=2){
printf("usage:<argc>\n");exit(-1);
}
struct sockaddr_in addr_server; //用于connect()的连接。存放server的地址信息
int status;
unsigned port=8080;
int c_fd;
int s_fd;
char *addr_p;
char buf[1024];
struct in_addr addr_n;
addr_p=argv[1];
printf("enter the chars\n");
c_fd=socket(AF_INET,SOCK_STREAM,0);
if(c_fd==-1){
perror("socket");exit(-1);
}
memset(&addr_server,0,sizeof(addr_server));//对地址结构的初始化和赋值
addr_server.sin_family=AF_INET;
addr_server.sin_port=htons(port);
inet_pton(AF_INET,addr_p,&addr_n);
addr_server.sin_addr=addr_n;
// addr_server.sin_addr.s_addr=inet_addr("192.168.245.128");
//代替inet_pton
while(1){
if(connect(c_fd,(struct sockaddr*)&addr_server,sizeof(struct sockaddr))==-1) //使用c_fd 与server建立连接。
perror("connect");
fgets(buf,1024,stdin);
if(write(c_fd,buf,1024)==-1){
perror("write");exit(-1);
}
memset(buf,0,1024);
if(read(c_fd,buf,1024)==-1){
perror("read");exit(-1);
}
printf("read from server:%s",buf);
break;
}
close(c_fd);
return 0;
}
上一篇:linux驱动模块的简单应用
下一篇:linux下获取主机信息编程
server端:public class Server { public static void main(Stri
Java 网络编程之Socket介绍
与c/c++ socket编程对
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M