首页编程socket编程例子,c语言的socket编程例子

socket编程例子,c语言的socket编程例子

编程之家2026-05-25819次浏览

大家好,感谢邀请,今天来为大家分享一下socket编程例子的问题,以及和c语言的socket编程例子的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

socket编程例子,c语言的socket编程例子

浅谈Java中如何利用socket进行网络编程(一)

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处理用户的请求和响应。利用SOCKET类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在JAVA中如何利用socket进行网络编程。在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。程序可以对这些数据流根据需要进行进一步的封装。本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。一、建立服务器类 Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。ServerSocket server= new ServerSocket(9998)这条语句创建了一个服务器对象,这个服务器使用9998号端口。当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且server.accept()方法会创建一个Socket对象。服务器端便可以利用这个Socket对象与客户进行通讯。Socket incoming= server.accept()进而得到输入流和输出流,并进行封装BufferedReader in= new BufferedReader(new InputStreamReader(incoming.getInputStream())); PrintWriter out= new PrintWriter(incoming.getOutputStream(),true);随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。从而可以根据程序的需要对客户端的不同请求进行回应。

linux下的 socket编程问题!

第一个问题:

对,是那样的,用open打开文件,用read读取文件,在发送给对方,接收方接收到后,写入文件就可以了。不过在这个过程中最好别用字符串函数,除非你很熟悉。

第二个问题

首先你得去搞清楚什么是线程,什么是进程,fork出来的叫进程,pthread_create出来的才叫线程。服务器有很多种模型(多进程,多线程,select,epoll模型,这个我的blog上有,famdestiny.cublog.cn),不一定要用多进程。

给你写了个代码,自己先看看:

socket编程例子,c语言的socket编程例子

注意,在自己的目录下创建一个叫pserverb的文件,程序会把这个文件复制成test文件。你可以自己根据需要改改

server:

#include<stdio.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<errno.h>

socket编程例子,c语言的socket编程例子

#include<signal.h>

#include<sys/wait.h>

#include<sys/types.h>

#include<string.h>

#include<stdlib.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<unistd.h>

#define SERV_PORT 5358

#define MAX_CONN 10

#define BUF_LEN 1024

void str_echo(FILE*fp, int sockfd){

ssize_t nread;

int file_fd;

char buf[BUF_LEN]={0};

file_fd= open("test", O_WRONLY| O_TRUNC| O_CREAT, 0755);

while(1){

bzero(buf, BUF_LEN);

if((nread= read(sockfd, buf, BUF_LEN))==-1){

if(errno== EINTR){

continue;

}

else{

printf("readn error:%s\n", strerror(errno));

continue;

}

}

else if(nread== 0){

break;

}

else{

printf("%s\n", buf);

write(file_fd, buf, nread);

}

}

close(file_fd);

}

void sig_chld(int sig){

pid_t pid;

int state;

while((pid= waitpid(-1,&state, WNOHANG))> 0){

printf("child process%d exited.", pid);

}

return;

}

int main(int argc, char**argv)

{

int listenfd, connfd;

socklen_t cliaddrlen;

pid_t childpid;

struct sockaddr_in servaddr, cliaddr;

if((listenfd= socket(AF_INET, SOCK_STREAM, 0))==-1){

printf("socket error:%s\n", strerror(errno));

return 0;

}

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family= AF_INET;

servaddr.sin_addr.s_addr= htonl(INADDR_ANY);

servaddr.sin_port= htons(SERV_PORT);

if(bind(listenfd,(struct sockaddr*)&servaddr, sizeof(servaddr))==-1){

printf("bind error:%s\n", strerror(errno));

return 0;

}

if(listen(listenfd, MAX_CONN)==-1){

printf("listen error:%s\n", strerror(errno));

return 0;

}

signal(SIGCHLD, sig_chld);

while(1){

cliaddrlen= sizeof(cliaddr);

if((connfd= accept(listenfd,(struct sockaddr*)&cliaddr,&cliaddrlen))==-1){

if(errno== EINTR){

continue;

}

else{

printf("accept error:%s\n", strerror(errno));

continue;

}

}

if((childpid= fork())== 0){

close(listenfd);

str_echo(stdin, connfd);

exit(0);

}

else if(childpid> 0){

close(connfd);

}

else{

printf("fork error!\n");

continue;

}

}

}

client:

#include<stdio.h>

#include<unistd.h>

#include<errno.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

#include<string.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<stdlib.h>

#define SERV_ADDR"127.0.0.1"

#define SERV_PORT 5358

#define BUF_LEN 1024

void str_cli(char*path, int sockfd)

{

char sendbuf[BUF_LEN]={0};

int fd, n;

if((fd= open("./pserverb", O_RDONLY))==-1){

printf("%s\n", strerror(errno));

exit(0);

}

while((n= read(fd, sendbuf, BUF_LEN))!= 0){

if(n< 0){

printf("%s\n", strerror(errno));

exit(0);

}

write(sockfd, sendbuf, n);

bzero(sendbuf, BUF_LEN);

}

close(fd);

return;

}

int main(int argc, char**argv)

{

int fd;

struct sockaddr_in servaddr;

fd= socket(AF_INET, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family= AF_INET;

servaddr.sin_addr.s_addr= inet_addr(SERV_ADDR);

servaddr.sin_port= htons(SERV_PORT);

if(connect(fd,(struct sockaddr*)&servaddr, sizeof(servaddr))==-1){

printf("connect error:%s\n", strerror(errno));

return 0;

}

str_cli(argv[1], fd);

return 0;

}

如何创建一个socket并进行通信

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处理用户的请求和响应。利用SOCKET类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在JAVA中如何利用socket进行网络编程。在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。程序可以对这些数据流根据需要进行进一步的封装。本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。一、建立服务器类 Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。ServerSocket server= new ServerS...

感觉这样的提问没有什么意义

建议看看书,查查资料

文章分享结束,socket编程例子和c语言的socket编程例子的答案你都知道了吗?欢迎再次光临本站哦!

html在线生成器?html网页制作软件手机版dw个人网站模板 网页设计制作网站模板图片