请问各位大侠,要在WINDOWS和UNIX之间相互传输数据(SOCKET),该如何实视?
最多只能给100分,谢谢
---------------------------------------------------------------
网络配置正确的话,就可以直接进行通信了 !
---------------------------------------------------------------
通信就是了,大家都按照相同的规则办事(虽然实现可能有不同),
要不然tcp/ip这些协议用来干吗?
---------------------------------------------------------------
很多标准示例
socket,bind,listen,accept
客户端用telnet
...
/******* 服务器程序 (server.c) ************/
#include
1<sys types.h="">
2#include <sys socket.h="">
3#include <netinet in.h="">
4#include <errno.h>
5#include <fcntl.h>
6#include <netdb.h>
7#include <signal.h>
8#include <stdio.h>
9#include <stdlib.h>
10#include <unistd.h>
11
12int main(int argc, char *argv[])
13{
14int sockfd,new_fd;
15struct sockaddr_in server_addr;
16struct sockaddr_in client_addr;
17int sin_size,portnumber;
18char hello[]="Hello! Are You Fine?\n";
19
20if(argc!=2)
21{
22fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
23exit(1);
24}
25
26if((portnumber=atoi(argv[1]))<0)
27{
28fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
29exit(1);
30}
31
32/* 服务器端开始建立socket描述符 */
33if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
34{
35fprintf(stderr,"Socket error:%s\n\a",strerror(errno));
36exit(1);
37}
38
39/* 服务器端填充 sockaddr结构 */
40bzero(&server_addr,sizeof(struct sockaddr_in));
41server_addr.sin_family=AF_INET;
42server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
43server_addr.sin_port=htons(portnumber);
44
45/* 捆绑sockfd描述符 */
46if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
47{
48fprintf(stderr,"Bind error:%s\n\a",strerror(errno));
49exit(1);
50}
51
52/* 监听sockfd描述符 */
53if(listen(sockfd,5)==-1)
54{
55fprintf(stderr,"Listen error:%s\n\a",strerror(errno));
56exit(1);
57}
58
59while(1)
60{
61/* 服务器阻塞,直到客户程序建立连接 */
62sin_size=sizeof(struct sockaddr_in);
63if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1)
64{
65fprintf(stderr,"Accept error:%s\n\a",strerror(errno));
66exit(1);
67}
68
69fprintf(stderr,"Server get connection from %s\n",
70inet_ntoa(client_addr.sin_addr));
71if(write(new_fd,hello,strlen(hello))==-1)
72{
73fprintf(stderr,"Write Error:%s\n",strerror(errno));
74exit(1);
75}
76/* 这个通讯已经结束 */
77close(new_fd);
78/* 循环下一个 */
79}
80close(sockfd);
81exit(0);
82}
83
84\---------------------------------------------------------------
85
86用TCP有流量控制的,不用担心
87
88\---------------------------------------------------------------
89
90定义双缓冲队列。一个读,一个写。满了就等待。</unistd.h></stdlib.h></stdio.h></signal.h></netdb.h></fcntl.h></errno.h></netinet></sys></sys>